home *** CD-ROM | disk | FTP | other *** search
/ 8bitfiles.net/archives / archives.tar / archives / compuserve-file-archive / 05 Programming / KERNEL.SRC < prev    next >
Text File  |  2019-04-13  |  88KB  |  6,055 lines

  1. ;===================================================================================            
  2. ;        VIC-20 KERNEL ROM Disassembly    
  3. ;        (c) 1995-1997 Richard A. Cini, Jr. All Rights Reserved.
  4. ;            
  5. ;  Release History:            
  6. ;  ================            
  7. ;  1995/03/01        0.10    Scanned document
  8. ;   {...many intervening steps...a slow, iterative process}
  9. ;  1997/03/21        0.99    First compiled completely with minor errors
  10. ;  1997/03/24        1.01    Completed fix-up. Code now compiles with all things in the right
  11. ;            places.
  12. ;            
  13. ;===================================================================================            
  14. ;Compile with RAM variables only            
  15. #include "ramvars.inc"
  16.  
  17.         .ORG $E000    
  18.         .db $0F    
  19.         .db $DC    ;Carry-over from BASIC ROM @$C000 JSR DC0F
  20.         LDA FC1EXP    
  21.         CMP #$88    
  22.         BCC ELOOP2    ;E00B
  23.  
  24. ELOOP1            
  25.         JSR MLDVEX    
  26.  
  27. ELOOP2            
  28.         JSR INT    
  29.         LDA CHARAC    
  30.         CLC    
  31.         ADC #$81    
  32.         BEQ ELOOP1    ;E008
  33.         SEC    
  34.         SBC #$01    
  35.         PHA    
  36.         LDX #$05    
  37.  
  38. ELOOP3            
  39.         LDA FC2EXP,X
  40.         LDY FC1EXP,X
  41.         STA FC1EXP,X
  42.         STY FC2EXP,X
  43.         DEX    
  44.         BPL ELOOP3    ;$E01B
  45.         LDA JMPER+2    
  46.         STA FC1ROU    
  47.         JSR FSUB+3    ;$D853
  48.         JSR NEGOP    
  49.         LDA #$EA    ;FIXUP1 ;#$C4
  50.         LDY #$EA    ;FIXUP1+1 ;#$DF table of some constants
  51.         JSR POLYIN    
  52.         LDA #$00    
  53.         STA ARISGN    
  54.         PLA    
  55.         JSR MULDIV+2    ;$DAB9
  56.         RTS    
  57.  
  58. ;====================================================================            
  59. ; POLYX - Function Series Evaluation            
  60. ;            
  61. POLYX            
  62.         STA CSBFLN    
  63.         STY CSBFLN+1    
  64.         JSR MOV2F+3    ;$DBCA
  65.         LDA #$57
  66.         JSR FMULT
  67.         JSR POLYX1
  68.         LDA #$57
  69.         LDY #$00
  70.         JMP FMULT
  71.  
  72. POLYIN        
  73.         STA CSBFLN
  74.         STY CSBFLN+1
  75.  
  76. POLYX1        
  77.         JSR MOV2F
  78.         LDA (CSBFLN),Y
  79.         STA SEVALP
  80.         LDY CSBFLN
  81.         INY
  82.         TYA
  83.         BNE POLYSK1
  84.         INC CSBFLN+1
  85.  
  86. POLYSK1        
  87.         STA CSBFLN
  88.         LDY CSBFLN+1
  89.  
  90. POLYLP        
  91.         JSR FMULT
  92.         LDA CSBFLN
  93.         LDY CSBFLN+1
  94.         CLC
  95.         ADC #$05
  96.         BCC POLYSK2
  97.         INY
  98.  
  99. POLYSK2        
  100.         STA CSBFLN
  101.         STY CSBFLN+1
  102.         JSR FADD
  103.         LDA #$5C
  104.         LDY #$00
  105.         DEC SEVALP
  106.         BNE POLYLP
  107.         RTS
  108.  
  109. ;====================================================================        
  110. ; RMULC - Constant Manipulation: RND Data        
  111. ;        
  112. RMULC        
  113.         .db $98, $35, $44, $7A, $00
  114.  
  115. RMULC1
  116.         .db $68, $28, $B1, $46, $00
  117.  
  118. ;====================================================================        
  119. ; RND - Perform RND function        
  120. ;        
  121. RND        
  122.         JSR SIGN
  123.         BMI RNDCAL
  124.         BNE RANDDT
  125.         JSR IOBASE
  126.  
  127.         STX UTLPTR
  128.         STY UTLPTR+1
  129.         LDY #$04
  130.         LDA (UTLPTR),Y
  131.         STA FC1M1
  132.         INY
  133.         LDA (UTLPTR),Y
  134.         STA FC1M3
  135.         LDY #$08
  136.         LDA (UTLPTR),Y
  137.         STA FC1M2
  138.         INY
  139.         LDA (UTLPTR),Y
  140.         STA FC1M4
  141.         JMP RNDEXIT
  142.  
  143. RANDDT        
  144.         LDA #$8B
  145.         LDY #$00
  146.         JSR MOVFM
  147.  
  148.         LDA #$EA    ;FIXUP1+2 ;#$8A randomize data LSB    
  149.         LDY #$EA     ;FIXUP1+3 #$E0    ;randomize data MSB
  150.         JSR FMULT    ;multiply    
  151.  
  152.         LDA #$EA     ;FIXUP1+4 ;#$8F    
  153.         LDY #$EA     ;FIXUP1+5 ;#$E0    
  154.         JSR FADD    ;ADD at E0BF    
  155.  
  156. RNDCAL                
  157.         LDX FC1M4        
  158.         LDA FC1M1        
  159.         STA FC1M4        
  160.         STX FC1M1        
  161.         LDX FC1M2        
  162.         LDA FC1M3        
  163.         STA FC1M2        
  164.         STX FC1M3    
  165.  
  166. RNDEXIT            
  167.         LDA #$00    
  168.         STA FC1SGN    
  169.         LDA FC1EXP    
  170.         STA FC1ROU    
  171.         LDA #$80    
  172.         STA FC1EXP    
  173.         JSR FADD+112    ;$D8D7
  174.         LDX #$8B    
  175.         LDY #$00    
  176.  
  177. RNEXIT            
  178.         JMP MOV2F+13    ;$DBD4
  179.  
  180.  
  181. ;====================================================================            
  182. ; BIOERR - Handle I/O Error in BASIC            
  183. ;            
  184. BIOERR            
  185.         CMP #$F0    
  186.         BNE BERSK    
  187.         STY MEMSIZ+1    
  188.         STX MEMSIZ    
  189.         JMP CLEAR+5    ;$C663
  190.  
  191. BERSK            
  192.         TAX    
  193.         BNE BERREX    
  194.         LDX #$1E    
  195.  
  196. BERREX        
  197.         JMP ERROR
  198.  
  199. ;====================================================================        
  200. ; BCHOUT - Output character        
  201. ;        
  202. BCHOUT        
  203.         JSR CHROUT
  204.         BCS BIOERR
  205.         RTS
  206.  
  207. ;====================================================================        
  208. ; BCHIN - Input a character        
  209. ;        
  210. BCHIN        
  211.         JSR CHRIN
  212.         BCS BIOERR
  213.         RTS
  214.  
  215. ;====================================================================        
  216. ; BCKOUT - Setup for output        
  217. ;        
  218. BCKOUT        
  219.         JSR CHKOUT
  220.         BCS BIOERR
  221.         RTS
  222.  
  223. ;====================================================================        
  224. ; BCKIN - Setup for input        
  225. ;        
  226. BCKIN        
  227.         JSR CHKIN
  228.         BCS BIOERR    
  229.         RTS    
  230.  
  231. ;====================================================================            
  232. ; BGETIN - Get one character            
  233. ;            
  234. BGETIN            
  235.         JSR GETIN    
  236.         BCS BIOERR    
  237.         RTS    
  238.  
  239. ;====================================================================            
  240. ; SYS - Perform SYS            
  241. ;            
  242. SYS            
  243.         JSR FRMNUM    ;confirm result
  244.         JSR GETADR    ;convert FAC1 to integer (line) number
  245.  
  246.         LDA #$EA     ;FIXUP1+7 #$E1
  247.         PHA    
  248.         LDA #$EA     ;FIXUP1+6 #$43
  249.         PHA    ;push address $E143 (breakpoint)
  250.         LDA R6502P    
  251.         PHA    ;save processor flags
  252.         LDA R6502A    
  253.         LDX R6502X    
  254.         LDY R6502Y    
  255.         PLP    ;restore flags
  256.         JMP (INTRVL)    ;jump to routine
  257.  
  258.         PHP    ;on return, restore regs
  259.         STA R6502A    
  260.         STX R6502X
  261.         STY R6502Y
  262.         PLA
  263.         STA R6502P
  264.         RTS
  265.  
  266. ;====================================================================        
  267. ; SAVET - Perform SAVE        
  268. ;        
  269. SAVET        
  270.         JSR SLPARA
  271.         LDX VARTAB
  272.         LDY VARTAB+1
  273.         LDA #$2B
  274.         JSR SAVE
  275.         BCS BIOERR
  276.  
  277.         RTS    
  278.  
  279. ;====================================================================            
  280. ; VERFYT - Perform Verify/Load            
  281. ;            
  282. VERFYT            
  283.         LDA #$01    ;1=verify
  284.         .db $2C    ;results in BIT $00A9 skip
  285.  
  286. VERFYL            
  287.         LDA #$00    ;0=load
  288.         STA VERCK    
  289.         JSR SLPARA    
  290.  
  291.         LDA VERCK    
  292.         LDX TXTTAB
  293.         LDY TXTTAB+1
  294.         JSR LOAD
  295.         BCS CLSEXT
  296.  
  297.         LDA VERCK
  298.         BEQ VERLD
  299.  
  300.         LDX #$1C
  301.         JSR READST
  302.         AND #$10
  303.         BEQ SKPRDY
  304.  
  305.         JMP ERROR
  306.  
  307. SKPRDY        
  308.         LDA TXTPTR    
  309.         CMP #$02    
  310.         BEQ VERIFX    
  311.  
  312.         LDA #$64    
  313.         LDY #$C3    
  314.         JMP STROUT    ;string at $C364
  315.  
  316. VERIFX            
  317.         RTS    
  318.  
  319. VERLD            
  320.         JSR READST    
  321.         AND #$BF    
  322.         BEQ VERSK1    
  323.  
  324.         LDX #$1D    
  325.         JMP ERROR    
  326.  
  327. VERSK1            
  328.         LDA TXTPTR+1    
  329.         CMP #$02    
  330.         BNE VERSK2    
  331.  
  332.         STX VARTAB    
  333.         STY VARTAB+1     
  334.         LDA #$76    
  335.         LDY #$C3    
  336.         JSR STROUT    ;string at $C376
  337.         JMP $C52A    
  338.  
  339. VERSK2            
  340.         JSR STXPT
  341.         JMP BASSLN
  342.  
  343. ;====================================================================        
  344. ; OPENT - Perform OPEN        
  345. ;        
  346. OPENT        
  347.         JSR OCPARA
  348.         JSR OPEN
  349.         BCS CLSEXT
  350.         RTS
  351.  
  352. ;====================================================================        
  353. ; CLOSET - Perform CLOSE        
  354. ;        
  355. CLOSET        
  356.         JSR OCPARA
  357.         LDA FORPNT
  358.         JSR CLOSE
  359.         BCC VERIFX
  360.  
  361. CLSEXT        
  362.         JMP BIOERR
  363.  
  364. ;====================================================================        
  365. ; SLPARA - Get LOAD/SAVE parameters        
  366. ;        
  367. SLPARA        
  368.         LDA #$00
  369.         JSR SETNAM
  370.         LDX #$01
  371.         LDY #$00
  372.         JSR SETLFS
  373.         JSR DEFLT
  374.         JSR OCPSK2
  375.         JSR DEFLT
  376.         JSR COMBYT
  377.         LDY #$00
  378.         STX FORPNT
  379.         JSR SETLFS
  380.         JSR DEFLT
  381.         JSR COMBYT
  382.         TXA
  383.         TAY
  384.         LDX FORPNT
  385.         JMP SETLFS
  386.  
  387. ;====================================================================        
  388. ; COMBYT - Get next one-byte parameter        
  389. ;        
  390. COMBYT        
  391.         JSR COMMA
  392.         JMP GETBYT+3
  393.  
  394. ;====================================================================        
  395. ; DEFLT - Check default parameters        
  396. ;        
  397. DEFLT        
  398.         JSR CHRGOT
  399.         BNE DEFLEX
  400.  
  401.         PLA
  402.         PLA
  403.  
  404. DEFLEX        
  405.         RTS
  406.  
  407. ;====================================================================        
  408. ; COMMA - Check for comma        
  409. ;        
  410. COMMA        
  411.         JSR CHKCOM
  412.         JSR CHRGOT
  413.         BNE DEFLEX
  414.  
  415.         JMP SNERR
  416.  
  417. ;====================================================================        
  418. ; OCPARA - Get OPEN/CLOSE parameters        
  419. ;        
  420. OCPARA        
  421.         LDA #$00
  422.         JSR SETNAM
  423.         JSR COMMA+3
  424.         JSR GETBYT+3
  425.         STX FORPNT
  426.         TXA
  427.         LDX #$01
  428.         LDY #$00
  429.         JSR SETLFS
  430.         JSR DEFLT
  431.         JSR COMBYT
  432.         STX FORPNT+1
  433.         LDY #$00
  434.         LDA FORPNT
  435.         CPX #$03
  436.         BCC OCPSK1
  437.  
  438.         DEY
  439.  
  440. OCPSK1        
  441.         JSR SETLFS
  442.         JSR DEFLT
  443.         JSR COMBYT
  444.         TXA
  445.         TAY
  446.         LDX FORPNT+1
  447.         LDA FORPNT
  448.         JSR SETLFS
  449.         JSR DEFLT
  450.         JSR COMMA
  451.  
  452. OCPSK2            
  453.         JSR FRMEVL    
  454.         JSR FRESTR    
  455.         LDX UTLPTR    
  456.         LDY UTLPTR+1    
  457.         JMP SETNAM    
  458.  
  459. ;====================================================================            
  460. ; COS - Perform COS function            
  461. ;            
  462. COS            
  463.         LDA #$EA     ;FIXUP1+12;#$DD
  464.         LDY #$EA     ;FIXUP1+13;#$E2 PI2 table
  465.         JSR FADD    
  466.  
  467. ;====================================================================            
  468. ; SIN - Perform SIN function            
  469. ;            
  470. SIN            
  471.         JSR MOVAF    
  472.         LDA #$EA     ;FIXUP1+14 ;#$E2
  473.         LDY #$EA     ;FIXUP1+15 ;#$E2 PI*2 table
  474.         LDX FC2SGN    
  475.         JSR FDIV    
  476.         JSR MOVAF    
  477.         JSR INT    
  478.         LDA #$00    
  479.         STA ARISGN    
  480.         JSR $D853    
  481.         LDA #$EA     ;FIXUP1+16;#$E7
  482.         LDY #$EA     ;FIXUP1+17;#$E2
  483.         JSR FSUB    ;const 1/4
  484.         LDA FC1SGN
  485.         PHA
  486.         BPL SINCON1
  487.  
  488.         JSR FADDH
  489.         LDA FC1SGN
  490.         BMI SINCON1A
  491.  
  492.         LDA TANSGN
  493.         EOR #$FF
  494.         STA TANSGN
  495.  
  496. SINCON1        
  497.         JSR NEGOP
  498.  
  499. SINCON1A        
  500.         LDA #$EA     ;FIXUP1+16;#$E7    
  501.         LDY #$EA     ;FIXUP1+17;#$E2    
  502.         JSR FADD    ;const 1/4    
  503.         PLA        
  504.         BPL SINCON2        
  505.  
  506.         JSR NEGOP        
  507.  
  508. SINCON2                
  509.         LDA #$EA     ;FIXUP1+18; #$EC    
  510.         LDY #$EA     ;FIXUP1+19;#$E2    ;counter
  511.         JMP POLYX        
  512.  
  513. ;====================================================================                
  514. ; TAN - Perform TAN function                
  515. ;                
  516. TAN        
  517.         JSR $DBCA
  518.         LDA #$00
  519.         STA TANSGN
  520.         JSR SIN
  521.         LDX #$4E
  522.         LDY #$00
  523.         JSR RNEXIT
  524.         LDA #$57
  525.         LDY #$00
  526.         JSR MOVFM
  527.         LDA #$00
  528.         STA FC1SGN
  529.         LDA TANSGN
  530.         JSR TAN2
  531.         LDA #$4E
  532.         LDY #$00
  533.         JMP FDIVT
  534.  
  535. TAN2        
  536.         PHA
  537.         JMP SINCON1
  538.  
  539. ;        
  540. ;Data: Trigonometry Constants $E2DD-E30A        
  541. PI2        ;PI/2
  542.         .db $81, $49, $0F, $DA, $A2 
  543.  
  544. PI22        ;PI*2
  545.         .db $83, $49, $0F, $DA, $A2
  546.  
  547. PI14        ;1/4
  548.         .db $7F, $00, $00, $00, $00 
  549.  
  550. RNCTR        ;counter
  551.         .db $05
  552.  
  553. TRIG14        ;-14.3813907
  554.         .db $84, $E6, $1A, $2D, $1B 
  555.  
  556. TRIG42        ;42.0077971
  557.         .db $86, $28, $07, $FB, $F8
  558.  
  559. TRIG76        ;-76.7041703
  560.         .db $87, $99, $68, $89, $01
  561.  
  562. TRIG81        ;81.6052237
  563.         .db $87, $23, $35, $DF, $E1
  564.  
  565. TRIG41        ;-41.3417021
  566.         .db $86, $A5, $5D, $E7, $28
  567.  
  568. TRIG6        ;6.28318531
  569.         .db $83, $49, $0F, $DA, $A2
  570.  
  571.  
  572. ;====================================================================        
  573. ; ATN - Perform ATN function        
  574. ;        
  575. ATN        
  576.         LDA FC1SGN
  577.         PHA
  578.         BPL ATNSK1
  579.  
  580.         JSR NEGOP    
  581.  
  582. ATNSK1            
  583.         LDA FC1EXP    
  584.         PHA    
  585.         CMP #$81    
  586.         BCC ATNSK2    
  587.  
  588.         LDA #$BC    
  589.         LDY #$D9    ;FONE - table of floating point constants
  590.         JSR FDIVT    
  591.  
  592. ATNSK2            
  593.         LDA #$EA     ;FIXUP1+22;#$3B
  594.         LDY #$EA     ;FIXUP1+23;$$E3 ATNCON - table of ATN constants
  595.         JSR POLYX    
  596.  
  597.         PLA        
  598.         CMP #$81        
  599.         BCC ATNSK3        
  600.  
  601.         LDA #$EA     ;FIXUP1+12;#$DD    
  602.         LDY #$EA     ;FIXUP1+13;#$E2    ;const PI/2
  603.         JSR FSUB        
  604.  
  605. ATNSK3                
  606.         PLA        
  607.         BPL ATNEXT        
  608.  
  609.         JMP NEGOP        
  610.  
  611. ATNEXT                
  612.         RTS
  613.  
  614. ;        
  615. ;  ATN Constants $E33B-E377        
  616. ;        
  617. ATNCON        
  618.         .db $0B, $76, $B3, $83, $BD, $D3, $79, $1E
  619.         .db $F4, $A6, $F5, $7B, $83, $FC, $B0, $10
  620.         .db $7C, $0C, $1F, $67, $CA, $7C, $DE, $53
  621.         .db $CB, $C1, $7D, $14, $64, $70, $4C, $7D
  622.         .db $B7, $EA, $51, $7A, $7D, $63, $30, $88
  623.         .db $7E, $7E, $92, $44, $99, $3A, $7E, $4C
  624.         .db $CC, $91, $C7, $7F, $AA, $AA, $AA, $13
  625.         .db $81, $00, $00, $00, $00,
  626.  
  627. ;====================================================================        
  628. ; INIT - BASIC cold start            
  629. ;            
  630. INIT            
  631.         JSR INITV    
  632.  
  633. INITNV            
  634.         JSR INITCZ    
  635.         JSR INITMS    
  636.         LDX #$FB    
  637.         TXS    
  638.         JMP READY    ;jump to BASIC
  639.  
  640. ;====================================================================            
  641. ; INITAT - CHRGET for zero-page            
  642. ;            
  643. INITAT            
  644.         INC TXTPTR    
  645.         BNE ININCR    
  646.  
  647.         INC TXTPTR+1    
  648.  
  649. ININCR            
  650.         LDA MOVLOOP-2    
  651.         CMP #':'    ;$3A
  652.         BCS INIEXT    
  653.  
  654.         CMP #' '    ;$20 {space}
  655.         BEQ INITAT    
  656.  
  657.         SEC    
  658.         SBC #$30    
  659.         SEC    
  660.         SBC #$D0
  661.  
  662. INIEXT        
  663.         RTS
  664.  
  665. ;====================================================================        
  666. ; RNDSED - RND seed value        
  667. ;        
  668. RNDSED        
  669.         .db $80, $4F, $C7, $52, $58
  670.  
  671. ;====================================================================        
  672. ; INITCZ - Initialize BASIC RAM        
  673. ;        
  674. INITCZ        
  675.         LDA #$4C
  676.         STA JMPER    
  677.         STA USRPOK    
  678.         LDA #$EA     ;FIXUP1+24;#$48
  679.         LDY #$EA     ;FIXUP1+25;#$D2
  680.         STA USRVEC    ;USER vector to $D248
  681.         STY USRVEC+1    
  682.  
  683.         LDA #$EA     ;FIXUP1+26;#$91
  684.         LDY #$EA     ;FIXUP1+27;#$D3
  685.         STA ADRAY2    
  686.         STY ADRAY2+1    ;$D391
  687.  
  688.         LDA #$EA    ;FIXUP1+28;#$AA
  689.         LDY #$EA     ;FIXUP1+29;#$D1
  690.         STA ADRAY1    
  691.         STY ADRAY1+1    ;$D1AA
  692.  
  693.         LDX #$1C    
  694.  
  695. CHGLOP            
  696.         LDA INITAT,X    ;copy CHRGET
  697.         STA CHRGET,X    
  698.         DEX    
  699.         BPL CHGLOP    
  700.  
  701.         LDA #$03    
  702.         STA JMPER-1    ;$53
  703.         LDA #$00    
  704.         STA FC1OVF    
  705.         STA IOPMPT    
  706.         STA LASTPT+1    
  707.         LDX #$01    
  708.         STX BUF-3    ;$01FD
  709.         STX BUF-4    ;$01FC
  710.         LDX #$19    
  711.         STX TEMPPT    
  712.         SEC    
  713.         JSR MEMBOT    
  714.         STX TXTTAB    
  715.         STY TXTTAB+1    
  716.         SEC    
  717.         JSR MEMTOP    
  718.         STX MEMSIZ    
  719.         STY MEMSIZ+1    
  720.         STX FRETOP    
  721.         STY FRETOP+1    
  722.         LDY #$00    
  723.         TYA    
  724.         STA (TXTTAB),Y
  725.         INC TXTTAB
  726.         BNE CZEXIT
  727.  
  728.         INC TXTTAB+1
  729.  
  730. CZEXIT        
  731.         RTS
  732.  
  733.  
  734. ;====================================================================        
  735. ; INITMS - Print power-up message        
  736. ;        
  737. INITMS        
  738.         LDA TXTTAB
  739.         LDY TXTTAB+1
  740.         JSR REASON    ; Check for memory overlap?    
  741.         LDA #$EA     ;FIXUP1+30;#$36    WORDS text
  742.         LDY #$EA     ;FIXUP1+31;#$E4    
  743.         JSR STROUT        
  744.  
  745.         LDA MEMSIZ        
  746.         SEC        
  747.         SBC TXTTAB        
  748.         TAX        
  749.         LDA MEMSIZ+1        
  750.         SBC TXTTAB+1        
  751.         JSR $DDCD    ; External entry into INPRT     
  752.         LDA #$EA     ;FIXUP1+32;#$29    FREMES text
  753.         LDY #$EA     ;FIXUP1+33;#$E4    
  754.         JSR STROUT        
  755.         JMP $C644    ; External entry into SCRTCH    
  756.  
  757. FREMES            
  758.         .db " BYTES FREE", $0D, $00    
  759.  
  760. WORDS            
  761.         .db $93, "**** CBM BASIC V2 ****", $0D, $00    
  762.  
  763. ;====================================================================            
  764. ; BVTRS - Basic vector table            
  765. ;            
  766. BVTRS            
  767.         .dw ERROR+3    ;$C43A
  768.         .dw MAIN+3    ;$C483
  769.         .dw CRNCH+3    ;$C57C
  770.         .dw QPLOP+3    ;$C71A
  771.         .dw GONE+3    ;$C7E4
  772.         .dw EVAL+3    ;$CE86
  773.  
  774. ;====================================================================            
  775. ; INITV - Initialize vectors            
  776. ;            
  777. INITV            
  778.         LDX #$0B    ;move 12 bytes
  779.  
  780. TVLOOP            
  781.         LDA BVTRS,X    ;load from BASIC vector table
  782.         STA ERRVPT,X    ;save to $0300
  783.         DEX    
  784.         BPL TVLOOP    
  785.  
  786.         RTS    
  787.  
  788. ;====================================================================            
  789. ; BASSFT - BASIC warm start            
  790. ;            
  791. BASSFT            
  792.         JSR CLRCH    
  793.         LDA #$00    
  794.         STA IOPMPT    
  795.         JSR $C67A    ;External entry into CLEAR
  796.         CLI    
  797.         JMP READY    
  798.  
  799.         .db $41    
  800.  
  801. BASSLN            
  802.         JSR LNKPRG    
  803.         JMP $C677    ;external entry into CLEAR
  804.  
  805. ;====================================================================            
  806. ; FIXUP1 - Absolute location fixup area #1            
  807. ;            
  808. FIXUP1        ;$E47C    
  809.         .dw $DFC4    ;0 e47c
  810.         .dw RMULC    ;2 7e
  811.         .dw RMULC1    ;4 80
  812.         .dw SYS+28    ;6 82
  813.         .dw $C364    ;8 84
  814.         .dw $C316    ;10 86
  815.         .dw PI2    ;12 88
  816.         .dw PI22    ;14 8a
  817.         .dw PI14    ;16 8c
  818.         .dw RNCTR    ;18 8e
  819.         .dw $D9BC    ;20 90
  820.         .dw ATNCON    ;22 92
  821.         .dw $D248    ;24 94
  822.         .dw $D391    ;26 96
  823.         .dw $D1AA    ;28 98
  824.         .dw WORDS    ;30 9a
  825.         .dw FREMES    ;32 9c
  826.         .dw PROCMORE    ;34 9e
  827.             ;ends at $ef9f
  828.  
  829.  
  830. ;====================================================================            
  831. ; SOUT1 - Serial output 1 (inverted logic)            
  832. ;            
  833. SOUT1            
  834.         LDA D2PCR    
  835.         AND #%11011111    ;$DF CB2
  836.         STA D2PCR    
  837.         RTS    
  838.  
  839. ;====================================================================            
  840. ; SOUT0- Serial output 0 (inverted logic)            
  841. ;            
  842. SOUT0            
  843.         LDA D2PCR    
  844.         ORA #%00100000    ;$20
  845.         STA D2PCR    
  846.         RTS    
  847.  
  848. ;====================================================================            
  849. ; SDCLK - Get SERDATA/SCLK in            
  850. ;            
  851. SDCLK            
  852.         LDA D1ORAH
  853.         CMP D1ORAH
  854.         BNE SDCLK
  855.  
  856.         LSR A
  857.         RTS
  858.  
  859.  
  860. ;====================================================================        
  861. ; SSADR - Get SECADR patch for LOAD/VERIFY        
  862. ;        
  863. SSADR        
  864.         LDX SECADR
  865.         JMP SRCHMS
  866.  
  867. ;====================================================================        
  868. ; SLDPCH - Relocated patch for serial LOAD/VERIFY        
  869. ;        
  870. SLDPCH        
  871.         TXA
  872.         BNE SLDEXIT
  873.  
  874.         LDA MEMUSS
  875.         STA EAL
  876.         LDA MEMUSS+1
  877.         STA EAL+1
  878.  
  879. SLDEXIT        
  880.         JMP LOADMS
  881.  
  882. ;====================================================================        
  883. ; TPWPCH - Tape write patch for CLOSE        
  884. ;            
  885. TPWPCH            
  886.         JSR TPWRIT    
  887.         BCC TPWCHEX    
  888.  
  889.         PLA    
  890.         LDA #$00    
  891.  
  892. TPWCHEX            
  893.         JMP ICLSE2    ;External entry into ICLOSE
  894.  
  895. ;====================================================================            
  896. ; FIXUP2 - Absolute location fixup area #2            
  897. ;            
  898. FIXUP2        ;$E4DA    
  899.         .dw KNRLSV    ;e4da FD6D
  900.         .dw KDECD1    ;dc
  901.         .dw $FFFF    ;de
  902.         .dw $FFFF    ;e0
  903.         .dw $FFFF    ;e2
  904.         .dw $FFFF    ;e4
  905.         .dw $FFFF    ;e6
  906.         .dw $FFFF    ;e8
  907.         .dw $FFFF    ;ea
  908.         .dw $FFFF    ;ec
  909.         .dw $FFFF    ;ee
  910.         .dw $FFFF    ;f0
  911.         .dw $FFFF    ;f2
  912.         .dw $FFFF    ;f4
  913.         .dw $FFFF    ;f6
  914.         .dw $FFFF    ;f8
  915.         .dw $FFFF    ;fa
  916.         .dw $FFFF    ;fc
  917.         .dw $FFFF    ;fe
  918.             ;ends at $e4ff
  919.  
  920. ;====================================================================            
  921. ; IIOBASE - Return I/O base address            
  922. ;            
  923. IIOBASE            
  924.         LDX #$10    
  925.         LDY #$91    
  926.         RTS    
  927.  
  928. ;====================================================================            
  929. ; ISCREN - Return screen organization            
  930. ;            
  931. ISCREN            
  932.         LDX #$16            
  933.         LDY #$17    
  934.         RTS    
  935.  
  936. ;====================================================================            
  937. ; IPLOT - Read/set cursor position            
  938. ;            
  939. IPLOT            
  940.         BCS READPL    ;carry set to read
  941.         STX CURROW    
  942.         STY CSRIDX    
  943.         JSR SCNPTR    
  944.  
  945. READPL            
  946.         LDX CURROW    
  947.         LDY CSRIDX    
  948.         RTS    
  949.  
  950. ;====================================================================            
  951. ; CINT1 - Initialize I/O            
  952. ;            
  953. CINT1            
  954.         JSR IODEF1    
  955.         LDA HIPAGE    
  956.         AND #%11111101    ;$FD
  957.         ASL A    
  958.         ASL A    
  959.         ORA #%10000000    ;$B0/80?
  960.         STA VRSTRT    
  961.         LDA HIPAGE    
  962.         AND #%00000010    ;$02
  963.         BEQ CINT1A    ;$E536
  964.  
  965.         LDA #%10000000    ;$B0
  966.         ORA VRCOLS    
  967.         STA VRCOLS    
  968.  
  969. CINT1A            
  970.         LDA #$00    
  971.         STA SHMODE    
  972.         STA BLNON    
  973.  
  974.         LDA #$EA     ;FIXUP1+34;#$DC
  975.         STA FCEVAL    
  976.         LDA #$EA     ;FIXUP1+35;#$EB
  977.         STA FCEVAL+1    ;FCEVAL=$EEDC???
  978.  
  979.         LDA #$0A    
  980.         STA KBMAXL    
  981.         STA KRPTDL    
  982.         LDA #$06    
  983.         STA CLCODE    
  984.         LDA #$04    
  985.         STA KRPTSP    
  986.         LDA #$0C    
  987.         STA BLNCT    
  988.         STA BLNSW    
  989. ;            
  990. ; Clear screen            
  991. ;            
  992. CLRSCN            
  993.         LDA HIPAGE    
  994.         ORA #%10000000    ;$80
  995.         TAY    
  996.         LDA #$00
  997.         TAX
  998.  
  999. CLRLP1        
  1000.         STY SLLTBL,X
  1001.         CLC
  1002.         ADC #$16
  1003.         BCC CLRSC1
  1004.  
  1005.         INY
  1006.  
  1007. CLRSC1        
  1008.         INX
  1009.         CPX #$18
  1010.         BNE CLRLP1
  1011.  
  1012.         LDA #$FF
  1013.         STA SLLTBL,X
  1014.         LDX #$16
  1015.  
  1016. CLRLP2        
  1017.         JSR CLRLIN
  1018.         DEX
  1019.         BPL CLRLP2
  1020. ;        
  1021. ; Home cursor        
  1022. ;        
  1023. HOME        
  1024.         LDY #$00
  1025.         STY CSRIDX
  1026.         STY CURROW
  1027. ;        
  1028. ; Set screen pointers        
  1029. ;        
  1030. SCNPTR        
  1031.         LDX CURROW
  1032.         LDA CSRIDX
  1033.  
  1034. SCNPLP        
  1035.         LDY SLLTBL,X
  1036.         BMI SCNPT1
  1037.  
  1038.         CLC
  1039.         ADC #$16
  1040.         STA CSRIDX
  1041.         DEX
  1042.         BPL SCNPLP
  1043.  
  1044. SCNPT1        
  1045.         LDA SLLTBL,X
  1046.         AND #$03
  1047.         ORA HIPAGE
  1048.         STA LINPTR+1
  1049.         LDA LBSCAD,X
  1050.         STA LINPTR
  1051.         LDA #$15
  1052.         INX
  1053.  
  1054. SCNLP1        
  1055.         LDY SLLTBL,X
  1056.         BMI SCNEXIT
  1057.  
  1058.         CLC
  1059.         ADC #$16
  1060.         INX
  1061.         BPL SCNLP1
  1062.  
  1063. SCNEXIT        
  1064.         STA LINLEN
  1065.         RTS
  1066.  
  1067. ;====================================================================        
  1068. ; PANIC - Set I/O defaults (unused entry point)        
  1069. ;        
  1070. PANIC        
  1071.         JSR IODEF1
  1072.         JMP HOME
  1073. ;        
  1074. ; Real PANIC entry        
  1075. ;        
  1076. IODEF1            
  1077.         LDA #$03    
  1078.         STA OUTDEV    
  1079.         LDA #$00    
  1080.         STA INDEV    
  1081. ;            
  1082. ; Initialize 6561 VIC            
  1083. ;            
  1084.         LDX #$10    
  1085.  
  1086.  
  1087. V6561I            
  1088.         LDA VICSUP-1,X    ;$ede3
  1089.         STA $8FFF,X    
  1090.         DEX    
  1091.         BNE V6561I    
  1092.  
  1093.         RTS
  1094.  
  1095. ;====================================================================        
  1096. ; LP2 - Get character from keyboard buffer        
  1097. ;        
  1098. LP2        
  1099.         LDY KBUFFR
  1100.         LDX #$00
  1101.  
  1102. LP2LOOP        
  1103.         LDA KBUFFR+1,X
  1104.         STA KBUFFR,X
  1105.         INX
  1106.         CPX KEYCNT
  1107.         BNE LP2LOOP
  1108.  
  1109.         DEC KEYCNT
  1110.         TYA
  1111.         CLI
  1112.         CLC
  1113.         RTS
  1114.  
  1115. ;====================================================================        
  1116. ; INKEY - Input from keyboard        
  1117. ;        
  1118. INKEY        
  1119.         JSR OUTSCR
  1120.  
  1121. KEYLP1        
  1122.         LDA KEYCNT
  1123.         STA BLNSW
  1124.         STA SCRLFL
  1125.         BEQ KEYLP1
  1126.  
  1127.         SEI
  1128.         LDA BLNON
  1129.         BEQ INKEY1
  1130.  
  1131.         LDA GDBLN
  1132.         LDX CSRCLR
  1133.         LDY #$00
  1134.         STY BLNON
  1135.         JSR PRNSCR
  1136.  
  1137. INKEY1        
  1138.         JSR LP2
  1139.         CMP #$83
  1140.         BNE INKEY2
  1141.  
  1142.         LDX #$09
  1143.         SEI
  1144.         STX KEYCNT
  1145.  
  1146. KEYLP2        
  1147.         LDA RUNSHF-1,X
  1148.         STA KBUFFR-1,X
  1149.         DEX
  1150.         BNE KEYLP2
  1151.         BEQ KEYLP1
  1152.  
  1153. INKEY2        
  1154.         CMP #$0D
  1155.         BNE INKEY
  1156.  
  1157.         LDY LINLEN
  1158.         STY INSRC
  1159.  
  1160. KEYLP3        
  1161.         LDA (LINPTR),Y
  1162.         CMP #$20
  1163.         BNE INKEY3
  1164.  
  1165.         DEY
  1166.         BNE KEYLP3
  1167.  
  1168. INKEY3        
  1169.         INY
  1170.         STY EOLPTR
  1171.         LDY #$00
  1172.         STY SCRLFL    
  1173.         STY CSRIDX    
  1174.         STY CSRMOD    
  1175.         LDA ICRROW    
  1176.         BMI INSCR1    
  1177.  
  1178.         LDX CURROW    
  1179.         JSR CSRMIN+4    ;$E719
  1180.         CPX ICRROW    
  1181.         BNE INSCR1    ;$E657
  1182.         BNE INSCR1    
  1183.  
  1184.         LDA ICRCOL    
  1185.         STA CSRIDX    
  1186.         CMP EOLPTR    
  1187.         BCC INSCR1    
  1188.         BCS INSCR4A
  1189.  
  1190. ;====================================================================        
  1191. ; INSCR - Input from screen/keyboard until <RET>        
  1192. ;        
  1193. INSCR        
  1194.         TYA
  1195.         PHA
  1196.         TXA
  1197.         PHA
  1198.         LDA INSRC
  1199.         BEQ KEYLP1
  1200.  
  1201. INSCR1        
  1202.         LDY CSRIDX
  1203.         LDA (LINPTR),Y
  1204.  
  1205.         .db $ea, $ea, $ea, $ea, $ea, $ea, $ea, $ea    
  1206.         .db $ea, $ea, $ea, $ea, $ea, $ea, $ea, $ea    
  1207.         .db $ea, $ea, $ea, $ea, $ea, $ea, $ea    
  1208.  
  1209.         STA LASTKY    
  1210.         AND #%00111111    ;$3F
  1211.         ASL LASTKY    
  1212.         BIT LASTKY    
  1213.         BPL INSCR2    
  1214.  
  1215.         ORA #%10000000    ;$B0/80
  1216.  
  1217. INSCR2            
  1218.         BCC INSCR3    
  1219.  
  1220.         LDX CSRMOD    
  1221.         BNE INSCR4    
  1222.  
  1223. INSCR3            
  1224.         BVS INSCR4    
  1225.  
  1226.         ORA #%01000000    ;$40
  1227.  
  1228. INSCR4            
  1229.         INC CSRIDX    
  1230.         JSR QUOTET    
  1231.         CPY EOLPTR    
  1232.         BNE INSCR7    
  1233.  
  1234. INSCR4A            
  1235.         LDA #$00    
  1236.         STA INSRC    
  1237.         LDA #$0D    
  1238.         LDX INDEV    
  1239.         CPX #$03    
  1240.         BEQ INSCR5    
  1241.  
  1242.         LDX OUTDEV    
  1243.         CPX #$03    ;output to screen?
  1244.         BEQ INSCR6    
  1245.  
  1246. INSCR5            
  1247.         JSR OUTSCR    
  1248.  
  1249. INSCR6            
  1250.         LDA #$0D    
  1251.  
  1252. INSCR7            
  1253.         STA LASTKY    
  1254.         PLA    
  1255.         TAX    
  1256.         PLA    
  1257.         TAY    
  1258.         LDA LASTKY    
  1259.         CMP #$DE    ;which key??
  1260.         BNE INSCREX    
  1261.  
  1262.         LDA #$FF    ;load return code
  1263.  
  1264. INSCREX            
  1265.         CLC    
  1266.         RTS    
  1267.  
  1268. ;====================================================================            
  1269. ; QUOTET - Quotes test            
  1270. ;            
  1271. QUOTET            
  1272.         CMP #$22    ;quote
  1273.         BNE QUOTEX    
  1274.  
  1275.         LDA CSRMOD    
  1276.         EOR #%00000001    ;$01
  1277.         STA CSRMOD    
  1278.         LDA #$22    
  1279.  
  1280. QUOTEX            
  1281.         RTS    
  1282.  
  1283. ;====================================================================            
  1284. ; CMD4 cmd- Setup screen print            
  1285. ;            
  1286. CMD4            
  1287.         ORA #%01000000    ;$40
  1288.         LDX RVS    
  1289.         BEQ CMD41    ;$e6cd
  1290.  
  1291.         ORA #%10000000    ;$B0 or 80
  1292.  
  1293. CMD41            
  1294.         LDX INSRTO    
  1295.         BEQ CMD42    ;$e6d3
  1296.  
  1297.         DEC INSRTO    
  1298.  
  1299. CMD42            
  1300.         LDX CLCODE    
  1301.         JSR PRNSCR    
  1302.         JSR CSRPLS    
  1303.  
  1304. CMD42A            
  1305.         PLA    
  1306.         TAY    
  1307.         LDA INSRTO    
  1308.         BEQ CMD4SK    ;$E6E4
  1309.  
  1310.         LSR CSRMOD    
  1311.  
  1312. CMD4SK            
  1313.         PLA    
  1314.         TAX    
  1315.         PLA    
  1316.         CLC    
  1317.         CLI    
  1318.         RTS    
  1319.  
  1320. ;====================================================================            
  1321. ; CSLPLS - Advance cursor            
  1322. ;            
  1323. CSRPLS            
  1324.         JSR CKLNPL    
  1325.         INC CSRIDX    
  1326.         LDA LINLEN    
  1327.         CMP CSRIDX    
  1328.         BCS CSREXIT    ;$E72C
  1329.  
  1330.         CMP #$57    
  1331.         BEQ CSRDEC    ;$E723
  1332.  
  1333.         LDA SCRLFL    
  1334.         BEQ CSRPSK    ;$E701
  1335.         JMP INSSLOP    ;$E9F0
  1336.  
  1337. CSRPSK            
  1338.         LDX CURROW    
  1339.         CPX #$17    
  1340.         BCC CSRSK2    ;$E70E
  1341.  
  1342.         JSR SCRLSC    
  1343.         DEC CURROW    
  1344.         LDX CURROW    
  1345.  
  1346. CSRSK2            
  1347.         ASL SLLTBL,X    
  1348.         LSR SLLTBL,X    
  1349.         JMP G4    
  1350.  
  1351. ;====================================================================            
  1352. ; CSRMIN - Move cursor back            
  1353. ;            
  1354. CSRMIN            
  1355.         ADC #$16    ;add 22d (screen line length)
  1356.         STA LINLEN    
  1357.  
  1358. CSRMLP            
  1359.         LDA SLLTBL,X
  1360.         BMI CSRMIN1    ;$E720
  1361.  
  1362.         DEX    
  1363.         BNE CSRMLP    ;$E719
  1364.  
  1365. CSRMIN1        
  1366.         JMP LINSTR
  1367.  
  1368. CSRDEC        
  1369.         DEC CURROW
  1370.         JSR NEWLIN
  1371.         LDA #$00
  1372.         STA CSRIDX
  1373.  
  1374. CSREXIT        
  1375.         RTS
  1376.  
  1377. ;====================================================================        
  1378. ; CSRUP - Move cursor up        
  1379. ;        
  1380. CSRUP            
  1381.         LDX CURROW    
  1382.         BNE CSRUP1    ;$E737
  1383.  
  1384.         STX CSRIDX    
  1385.         PLA    
  1386.         PLA    
  1387.         BNE CMD42A    ;$E6DC
  1388.  
  1389. CSRUP1            
  1390.         DEX    
  1391.         STX CURROW    
  1392.         JSR SCNPTR    
  1393.         LDY LINLEN    
  1394.         STY CSRIDX    
  1395.         RTS    
  1396.  
  1397. ;====================================================================            
  1398. ; OUTSCR - Output to screen            
  1399. ;            
  1400. OUTSCR            
  1401.         PHA    
  1402.         STA LASTKY    
  1403.         TXA    
  1404.         PHA    
  1405.         TYA    
  1406.         PHA    
  1407.         LDA #$00    
  1408.         STA INSRC    
  1409.         LDY CSRIDX    
  1410.         LDA LASTKY    
  1411.         BPL NOSHCH    ;$E756
  1412.  
  1413.         JMP SHCHRS    
  1414. ;            
  1415. ; Output unshifted characters            
  1416. ;            
  1417. NOSHCH            
  1418.         CMP #$0D    
  1419.         BNE NOTCR    ;$E75D
  1420.  
  1421.         JMP CR    
  1422.  
  1423. NOTCR            
  1424.         CMP #$20    ;{space}
  1425.         BCC CTRLCODE    ;$E771
  1426.  
  1427.         CMP #$60    ;last standard ASCII
  1428.         BCC ALPHA    ;$E769
  1429.  
  1430.         AND #%11011111    ;$DF
  1431.         BNE ALPHA1    ;$E76B
  1432.  
  1433. ALPHA            
  1434.         AND #%00111111    ;$3F
  1435.  
  1436. ALPHA1            
  1437.         JSR QUOTET    
  1438.         JMP CMD4+2    ;$E6C7
  1439.  
  1440. CTRLCODE            
  1441.         LDX INSRTO    
  1442.         BEQ NOINSERT    ;$E778
  1443.         JMP CMD41-2    ;$E6CB
  1444.  
  1445. NOINSERT            
  1446.         CMP #$14    ;{delete}
  1447.         BNE NOTDEL    ;$E7AA
  1448.  
  1449.         TYA    
  1450.         BNE DEL    ;$E785
  1451.  
  1452.         JSR CSRUP    ;$E72D
  1453.         JMP NOSHCH1    ;$E79F
  1454.  
  1455. DEL            
  1456.         JSR CKLNMI    ;$E8E8
  1457.         DEY    
  1458.         STY CSRIDX    
  1459.         JSR BLINK    
  1460.  
  1461. NOSHLP1            
  1462.         INY    
  1463.         LDA (LINPTR),Y
  1464.         DEY    
  1465.         STA (LINPTR),Y
  1466.         INY    
  1467.         LDA (COLRPT),Y
  1468.         DEY    
  1469.         STA (COLRPT),Y
  1470.         INY    
  1471.         CPY LINLEN    
  1472.         BNE NOSHLP1    ;$E78E
  1473.  
  1474. NOSHCH1            
  1475.         LDA #$20    
  1476.         STA (LINPTR),Y
  1477.         LDA CLCODE    
  1478.         STA (COLRPT),Y
  1479.         BPL NOTRT1A    ;$E7F7
  1480.  
  1481. NOTDEL            
  1482.         LDX CSRMOD    
  1483.         BEQ NOTDEL1    ;$E7B1
  1484.         JMP CMD41-2    ;$E6CB
  1485.  
  1486. NOTDEL1            
  1487.         CMP #$12    ;{RVS}
  1488.         BNE NOTRVS    ;$E7B7
  1489.  
  1490.         STA RVS    
  1491.  
  1492. NOTRVS            
  1493.         CMP #$13    ;{HOME}
  1494.         BNE NOTHOME    ;$E7BE
  1495.  
  1496.         JSR HOME    
  1497.  
  1498. NOTHOME            
  1499.         CMP #$1D    ;{RIGHT}
  1500.         BNE NOTRT    ;$E7D9
  1501.  
  1502.         INY    ;right
  1503.         JSR CKLNPL    
  1504.         STY CSRIDX    
  1505.         DEY    
  1506.         CPY LINLEN    
  1507.         BCC CSRRTEX    ;$E7D6
  1508.  
  1509.         DEC CURROW    
  1510.         JSR NEWLIN    
  1511.         LDY #$00    
  1512.         STY CSRIDX    
  1513.  
  1514. CSRRTEX            
  1515.         JMP CMD42A    ;$E6DC
  1516.  
  1517. NOTRT            
  1518.         CMP #$11    ;{DOWN}
  1519.         BNE NOTDOWN    ;$E7FA
  1520.  
  1521.         CLC    ;down
  1522.         TYA    
  1523.         ADC #$16    
  1524.         TAY    
  1525.         INC CURROW    
  1526.         CMP LINLEN    
  1527.         BCC CSRRTEX-2    ;$E7D4
  1528.         BEQ CSRRTEX-2    ;$E7D4
  1529.  
  1530.         DEC CURROW    
  1531.  
  1532. NOTRTLP            
  1533.         SBC #$16    
  1534.         BCC NOTRT1    ;$E7F4
  1535.  
  1536.         STA CSRIDX    
  1537.         BNE NOTRTLP    ;$E7EC
  1538.  
  1539. NOTRT1            
  1540.         JSR NEWLIN    
  1541.  
  1542. NOTRT1A            
  1543.         JMP CMD42A    
  1544.  
  1545. NOTDOWN            
  1546.         JSR STCLRC    ;$E912
  1547.         JMP GRTXTF    ;$ED21
  1548. ;            
  1549. ; Output shifted characters            
  1550. ;            
  1551. SHCHRS            
  1552.         .db $ea, $ea, $ea, $ea, $ea, $ea, $ea, $ea
  1553.         .db $ea, $ea, $ea, $ea, $ea, $ea, $ea, $ea
  1554.         .db $ea, $ea, $ea, $ea, $ea
  1555.  
  1556.         AND #%01111111    ;$7F
  1557.         CMP #%01111111    ;$7F
  1558.         BNE SRCH_S1    ;$E81D
  1559.  
  1560.         LDA #$5E    
  1561.  
  1562. SRCH_S1            
  1563.         .db $ea, $ea, $ea, $ea, $ea, $ea
  1564.  
  1565.         CMP #$20    ;{space}
  1566.         BCC SRCH_S2    ;$E82A
  1567.         JMP CMD4    ;$E6C5
  1568.  
  1569. SRCH_S2            
  1570.         CMP #$0D    ;{return}
  1571.         BNE SRCH_S3    ;$E831
  1572.         JMP CR    
  1573.  
  1574. SRCH_S3            
  1575.         LDX CSRMOD    
  1576.         BNE SCHR2    ;$E874
  1577.  
  1578.         CMP #$14    ;{text}
  1579.         BNE SCHR1    ;$E870
  1580.  
  1581.         LDY LINLEN    
  1582.         LDA (LINPTR),Y
  1583.         CMP #$20    
  1584.         BNE SRCH_S4    ;$E845
  1585.  
  1586.         CPY CSRIDX    
  1587.         BNE SRCH_S5    ;$E84C
  1588.  
  1589. SRCH_S4            
  1590.         CPY #$57    
  1591.         BEQ SCHR1-3    ;$E86D
  1592.  
  1593.         JSR INSSPC    ;$E9EE
  1594.  
  1595. SRCH_S5            
  1596.         LDY LINLEN    
  1597.         JSR BLINK    
  1598.  
  1599. SHCHLOOP            
  1600.         DEY    
  1601.         LDA (LINPTR),Y
  1602.         INY    
  1603.         STA (LINPTR),Y
  1604.         DEY    
  1605.         LDA (COLRPT),Y
  1606.         INY    
  1607.         STA (COLRPT),Y
  1608.         DEY    
  1609.         CPY CSRIDX    
  1610.         BNE SHCHLOOP    ;$E851
  1611.  
  1612.         LDA #$20    
  1613.         STA (LINPTR),Y
  1614.         LDA CLCODE    
  1615.         STA (COLRPT),Y
  1616.         INC INSRTO    
  1617.         JMP CMD42A    
  1618.  
  1619. SCHR1            
  1620.         LDX INSRTO    
  1621.         BEQ SRCH_S6    ;$E879
  1622.  
  1623. SCHR2            
  1624.         ORA #%01000000    ;$40
  1625.         JMP CMD4+6    ;$E6CB
  1626.  
  1627. SRCH_S6            
  1628.         CMP #$11    ;{down}
  1629.         BNE SCHR3    ;$E893
  1630.  
  1631.         LDX CURROW    
  1632.         BEQ SHCHEXIT-3    ;$E8B8
  1633.  
  1634.         DEC CURROW    
  1635.         LDA CSRIDX    
  1636.         SEC    
  1637.         SBC #$16    
  1638.         BCC SRCH_S7    ;$E88E
  1639.  
  1640.         STA CSRIDX    
  1641.         BPL SHCHEXIT-3    ;$E8B8
  1642.  
  1643. SRCH_S7            
  1644.         JSR SCNPTR    
  1645.         BNE SHCHEXIT-3    ;$E8B8
  1646.  
  1647. SCHR3            
  1648.         CMP #$12    ;{RVS}
  1649.         BNE SRCH_S8    ;$E89B
  1650.  
  1651.         LDA #$00    
  1652.         STA RVS    
  1653.  
  1654. SRCH_S8            
  1655.         CMP #$1D    ;{right}
  1656.         BNE SHCH4    ;$E8B1
  1657.  
  1658.         TYA    
  1659.         BEQ SRCH_S9    ;$E8AB
  1660.         JSR CKLNMI    ;$E8E8
  1661.         DEY    
  1662.         STY CSRIDX    
  1663.         JMP CMD42A    
  1664.  
  1665. SRCH_S9            
  1666.         JSR CSRUP    ;$E72D
  1667.         JMP CMD42A    
  1668.  
  1669. SHCH4            
  1670.         CMP #$13    ;{home}
  1671.         BNE SHCHEXIT    ;$E8BB
  1672.  
  1673.         JSR CLRSCN    ;$E55F
  1674.         JMP CMD42A    
  1675.  
  1676. SHCHEXIT            
  1677.         ORA #%10000000    ;$80
  1678.         JSR STCLRC    ;$E912
  1679.         JMP G1    ;$ED30
  1680.  
  1681. ;====================================================================            
  1682. ; NEWLIN - Goto next line            
  1683. ;            
  1684. NEWLIN            
  1685.         LSR ICRROW    
  1686.         LDX CURROW    
  1687.  
  1688. NWLNLP            
  1689.         INX    
  1690.         CPX #$17    
  1691.         BNE NEWLIN1    ;$E8CF
  1692.         JSR SCRLSC    
  1693.  
  1694. NEWLIN1            
  1695.         LDA SLLTBL,X
  1696.         BPL NWLNLP    ;$E8C7
  1697.         STX CURROW    
  1698.         JMP SCNPTR    
  1699.  
  1700. ;====================================================================            
  1701. ; CR - Output <RET>            
  1702. ;            
  1703. CR            
  1704.         LDX #$00    
  1705.         STX INSRTO    
  1706.         STX RVS    
  1707.         STX CSRMOD    
  1708.         STX CSRIDX    
  1709.         JSR NEWLIN    
  1710.         JMP CMD42A    ;$E6DC
  1711.  
  1712. ;====================================================================            
  1713. ; CKLNMI - Check line decrement            
  1714. ;            
  1715. CKLNMI            
  1716.         LDX #$04    
  1717.         LDA #$00    
  1718.  
  1719. CKLNLP            
  1720.         CMP CSRIDX    
  1721.         BEQ CKLND1    ;$E8F7
  1722.  
  1723.         CLC    
  1724.         ADC #$16    
  1725.         DEX    
  1726.         BNE CKLNLP    ;$E8EC
  1727.  
  1728.         RTS    
  1729.  
  1730. CKLND1            
  1731.         DEC CURROW    
  1732.         RTS    
  1733.  
  1734. ;====================================================================            
  1735. ; CKLNPL - Check for line increment            
  1736. ;            
  1737. CKLNPL            
  1738.         LDX #$04    
  1739.         LDA #$15    
  1740.  
  1741. CKLNINL            
  1742.         CMP CSRIDX    
  1743.         BEQ CKLNIN    ;$E909
  1744.  
  1745.         CLC    
  1746.         ADC #$16    
  1747.         DEX    
  1748.         BNE CKLNINL    ;$E8FE
  1749.  
  1750.         RTS    
  1751.  
  1752. CKLNIN            
  1753.         LDX CURROW    
  1754.         CPX #$17    
  1755.         BEQ CKLNEX    ;$E911
  1756.  
  1757.         INC CURROW    
  1758.  
  1759. CKLNEX            
  1760.         RTS    
  1761.  
  1762. ;====================================================================            
  1763. ; STCLRC - Set color code            
  1764. ;            
  1765. STCLRC            
  1766.         LDX #$07    
  1767.  
  1768. STCLRL            
  1769.         CMP COLRTB,X
  1770.         BEQ SETCLR    ;$E91D
  1771.  
  1772.         DEX    
  1773.         BPL STCLRL    ;$E914
  1774.  
  1775.         RTS    
  1776.  
  1777. SETCLR            
  1778.         STX CLCODE    
  1779.         RTS    
  1780.  
  1781. ;  Table: Color code        
  1782. COLRTB        
  1783.         .db $90, $05, $1C, $9F, $9C, $1E, $1F, $9E
  1784.  
  1785.  
  1786. ;  Table: ScreenCode <==> ASCII        
  1787. XLATB1        
  1788.         .db $EF, $A1, $DF, $A6, $E1, $B1, $E2, $B2
  1789.         .db $E3, $B3, $E4, $B4, $E5, $B5, $E6, $B6
  1790.         .db $E7, $B7, $E8, $B8, $E9, $B9, $FA, $BA
  1791.         .db $FB, $BB, $FC, $BC, $EC, $BD, $FE, $BE
  1792.         .db $84, $BF, $F7, $C0, $F8, $DB, $F9, $DD
  1793.         .db $EA, $DE, $5E, $E0, $5B, $E1, $5D, $E2
  1794.         .db $40, $B0, $61, $B1, $78, $DB, $79, $DD
  1795.         .db $66, $B6, $77, $C0, $70, $F0, $71, $F1
  1796.         .db $72, $F2, $73, $F3, $74, $F4, $75, $F5
  1797.         .db $76, $F6, $7D, $FD
  1798.  
  1799. ;====================================================================        
  1800. ; SCRLSC - Scroll screen Evaluation        
  1801. ;        
  1802. SCRLSC        
  1803.         LDA SAL
  1804.         PHA
  1805.         LDA SAL+1
  1806.         PHA
  1807.         LDA EAL
  1808.         PHA
  1809.         LDA EAL+1
  1810.         PHA
  1811.  
  1812. SCLPUSH            
  1813.         LDX #$FF    
  1814.         DEC CURROW    
  1815.         DEC ICRROW    
  1816.         DEC SCROWM    
  1817.  
  1818. SCRLP1            
  1819.         INX    
  1820.         JSR LINSTR    
  1821.         CPX #$16    
  1822.         BCS SCRL_S1    ;$E99D
  1823.  
  1824.         LDA LBSCAD+1,X    ;$EDFE,X
  1825.         STA SAL    
  1826.         LDA SLLTBL+1,X
  1827.         JSR MOVELN    
  1828.         BMI SCRLP1    ;$E989
  1829.  
  1830. SCRL_S1            
  1831.         JSR CLRLIN    
  1832.         LDX #$00    
  1833.  
  1834. SCRLP2            
  1835.         LDA SLLTBL,X
  1836.         AND #%01111111    ;$7F
  1837.         LDY SLLTBL+1,X
  1838.         BPL SCRL_S2    ;E9AC
  1839.  
  1840.         ORA #%10000000    ;$B0 or 80
  1841.  
  1842. SCRL_S2            
  1843.         STA SLLTBL,X
  1844.         INX    
  1845.         CPX #$16    
  1846.         BNE SCRLP2    ;$E9A2
  1847.  
  1848.         LDA SLLTBL+22    ;$EF
  1849.         ORA #%10000000    ;$B0 or 80
  1850.         STA SLLTBL+22    ;$EF
  1851.         LDA SLLTBL    
  1852.         BPL SCLPUSH    ;$E981
  1853.  
  1854.         INC CURROW    
  1855.         INC SCROWM    
  1856.         LDA #$FB    
  1857.         STA D2ORB    
  1858.         LDA D2ORA    
  1859.         CMP #$FE    
  1860.         PHP    
  1861.         LDA #$F7    
  1862.         STA  D2ORB    
  1863.         PLP    
  1864.         BNE SCRL_S3    ;$E9DF
  1865.  
  1866.         LDY #$00    
  1867.  
  1868. SCRL_S2A            
  1869.         NOP    
  1870.         DEX    
  1871.         BNE SCRL_S2A    ;E9D6
  1872.  
  1873.         DEY    
  1874.         BNE SCRL_S2A    ;E9D6 
  1875.  
  1876.         STY KEYCNT
  1877.  
  1878. SCRL_S3        
  1879.         LDX CURROW 
  1880.         PLA
  1881.         STA EAL+1
  1882.         PLA
  1883.         STA EAL
  1884.         PLA
  1885.         STA SAL+1
  1886.         PLA
  1887.         STA SAL
  1888.         RTS
  1889.  
  1890.  
  1891. ;====================================================================        
  1892. ; INSSPC - Open a space on the screen            
  1893. ;            
  1894. INSSPC            
  1895.         LDX CURROW    
  1896.  
  1897. INSSLOP            
  1898.         INX    
  1899.         LDA SLLTBL,X
  1900.         BPL INSSLOP    ; $E9F0
  1901.  
  1902.         STX SCROWM    
  1903.         CPX #$16    
  1904.         BEQ INSSPC1    ;$EA08
  1905.         BCC INSSPC1    
  1906.  
  1907.         JSR SCRLSC    
  1908.         LDX SCROWM    
  1909.         DEX    
  1910.         DEC CURROW    
  1911.         JMP CSRSK2    ;$E70E
  1912.  
  1913. INSSPC1            
  1914.         LDA SAL    
  1915.         PHA    
  1916.         LDA SAL+1    
  1917.         PHA    
  1918.         LDA EAL    
  1919.         PHA    
  1920.         LDA EAL+1    
  1921.         PHA    
  1922.         LDX #$17    
  1923.  
  1924. INSSLP2            
  1925.         DEX    
  1926.         JSR LINSTR    
  1927.         CPX SCROWM    
  1928.         BCC INSSPC2    ;$EA2C
  1929.         BEQ INSSPC2    ;$EA2C
  1930.  
  1931.         LDA LBSCAD-1,X    ;$EDFC
  1932.         STA SAL    
  1933.         LDA INSRTO,X
  1934.         JSR MOVELN    
  1935.         BMI INSSLP2    ;$EA16
  1936.  
  1937. INSSPC2            
  1938.         JSR CLRLIN    
  1939.         LDX #$15    
  1940.  
  1941. INSSLP3            
  1942.         CPX SCROWM    
  1943.         BCC INSEXIT    ;$EA44
  1944.  
  1945.         LDA SLLTBL+1,X 
  1946.         AND #%01111111    ;$7F
  1947.         LDY SLLTBL,X
  1948.         BPL INSSPC3    ;$EA3F
  1949.  
  1950.         ORA #%10000000    ;$80
  1951.  
  1952. INSSPC3            
  1953.         STA SLLTBL+1,X
  1954.         DEX    
  1955.         BNE INSSLP3    ;$EA31
  1956.  
  1957. INSEXIT        
  1958.         LDX SCROWM
  1959.         JSR CSRSK2
  1960.         PLA
  1961.         STA EAL+1
  1962.         PLA
  1963.         STA EAL
  1964.         PLA
  1965.         STA SAL+1
  1966.         PLA
  1967.         STA SAL
  1968.         RTS
  1969.  
  1970. ;====================================================================        
  1971. ; MOVELN - Move a screen line        
  1972. ;            
  1973. MOVELN            
  1974.         AND #%00000011    ;$03
  1975.         ORA HIPAGE    
  1976.         STA SAL+1    
  1977.         JSR COPYCL    
  1978.         LDY #$15    
  1979.  
  1980. MOVLOOP            
  1981.         LDA (SAL),Y
  1982.         STA (LINPTR),Y
  1983.         LDA (EAL),Y
  1984.         STA (COLRPT),Y
  1985.         DEY    
  1986.         BPL MOVLOOP    ;$EA62
  1987.         RTS    
  1988.  
  1989. ;====================================================================            
  1990. ; COPYCL - Synchronize color transfer            
  1991. ;            
  1992. COPYCL            
  1993.         JSR BLINK    
  1994.         LDA SAL    
  1995.         STA EAL    
  1996.         LDA SAL+1    
  1997.         AND #%00000011    ;$03
  1998.         ORA #%10010100    ;$94
  1999.         STA EAL+1    
  2000.         RTS    
  2001.  
  2002. ;====================================================================            
  2003. ; LINSTR - Set start of line            
  2004. ;            
  2005. LINSTR            
  2006.         LDA LBSCAD,X    ;$EDFD
  2007.         STA LINPTR    
  2008.         LDA SLLTBL,X
  2009.         AND #%00000011    ;$03
  2010.         ORA HIPAGE    
  2011.         STA LINPTR+1    
  2012.         RTS    
  2013.  
  2014. ;====================================================================            
  2015. ; CLRLIN - Clear screen line            
  2016. ;            
  2017. CLRLIN            
  2018.         LDY #$15    
  2019.         JSR LINSTR    
  2020.         JSR BLINK    
  2021.  
  2022. CLEARLP            
  2023.         LDA #$20    ;{space}
  2024.         STA (LINPTR),Y
  2025.         LDA #$01    
  2026.         STA (COLRPT),Y
  2027.         DEY    
  2028.         BPL CLEARLP    ;$EA95
  2029.         RTS    
  2030.  
  2031. ;====================================================================            
  2032. ; PRNSCR - Print to screen            
  2033. ;            
  2034. PRNSCR            
  2035.         TAY    
  2036.         LDA #$02
  2037.         STA BLNCT
  2038.         JSR BLINK
  2039.         TYA
  2040.  
  2041. PRNSCR1        
  2042.         LDY CSRIDX
  2043.         STA (LINPTR),Y
  2044.         TXA
  2045.         STA (COLRPT),Y
  2046.         RTS
  2047.  
  2048. ;====================================================================        
  2049. ; BLINK - Blink cursor        
  2050. ;        
  2051. BLINK        
  2052.         LDA LINPTR    
  2053.         STA COLRPT    
  2054.         LDA LINPTR+1    
  2055.         AND #%00000011    ;$03
  2056.         ORA #%10010100    ;$94
  2057.         STA COLRPT+1    
  2058.         RTS    
  2059.  
  2060. ;====================================================================            
  2061. ; IRQVEC - IRQ Vector            
  2062. ;            
  2063. IRQVEC            
  2064.         JSR UDTIM    ;update clock F734
  2065.         LDA BLNSW    
  2066.         BNE IRQVEC2    ;$EAEF
  2067.  
  2068.         DEC BLNCT    ;decrement blink count
  2069.         BNE IRQVEC2    ;$EAEF
  2070.  
  2071.         LDA #$14    
  2072.         STA BLNCT    
  2073.         LDY CSRIDX    
  2074.         LSR BLNON    
  2075.         LDX CSRCLR    
  2076.         LDA (LINPTR),Y
  2077.         BCS IRQVEC1    ;$EAEA
  2078.  
  2079.         INC BLNON    
  2080.         STA GDBLN    
  2081.         JSR BLINK    
  2082.         LDA (COLRPT),Y
  2083.         STA CSRCLR    
  2084.         LDX CLCODE    
  2085.         LDA GDBLN    
  2086.  
  2087. IRQVEC1            
  2088.         EOR #%10000000    
  2089.         JSR PRNSCR1    
  2090.  
  2091. IRQVEC2            
  2092.         LDA D1ORAH    
  2093.         AND #%01000000    ;$40
  2094.         BEQ IRQVEC3    ;$EB01
  2095.  
  2096.         LDY #$00    
  2097.         STY CAS1    
  2098.         LDA D1PCR    
  2099.         ORA #%00000010    ;$02
  2100.         BNE IRQVEC4    ;$EB0A
  2101.  
  2102. IRQVEC3            
  2103.         LDA CAS1    
  2104.         BNE IRQVEC5    ;$EB12
  2105.  
  2106.         LDA D1PCR    
  2107.         AND #%11111101    ;$FD
  2108.  
  2109. IRQVEC4            
  2110.         BIT D1IER    
  2111.         BVS IRQVEC5    ;$EB12
  2112.  
  2113.         STA D1PCR    
  2114.  
  2115. IRQVEC5            
  2116.         JSR ISCNKY    ;Eb1E
  2117.         BIT D2TM1L    ;9124
  2118.         PLA    
  2119.         TAY    
  2120.         PLA    
  2121.         TAX    
  2122.         PLA    
  2123.         RTI    
  2124.  
  2125. ;====================================================================            
  2126. ; ISCNKY - Scan keyboard            
  2127. ;            
  2128. ISCNKY            
  2129.         LDA #$00    
  2130.         STA SHFTFL    
  2131.         LDY #$40    
  2132.         STY KEYDN    
  2133.         STA D2ORB    
  2134.         LDX D2ORA    
  2135.         CPX #$FF    
  2136.         BEQ PROCK1A    ;$EB8F
  2137.  
  2138.         LDA #$FE    
  2139.         STA D2ORB    
  2140.         LDY #$00    
  2141.         LDA #$EA     ;FIXUP2+2;#$5E
  2142.         STA KEYTAB    
  2143.         LDA #$EA     ;FIXUP2+3;#$EC
  2144.         STA KEYTAB+1    
  2145.  
  2146. ISCKLP1            
  2147.         LDX #$08    
  2148.         LDA D2ORA    
  2149.         CMP D2ORA    
  2150.         BNE ISCKLP1    ;$EB40
  2151.  
  2152. ISCKLP2            
  2153.         LSR A    
  2154.         BCS ISCNK1+3    ;$EB63
  2155.  
  2156.         PHA    
  2157.         LDA (KEYTAB),Y
  2158.         CMP #$05    
  2159.         BCS ISCNK1    ;$EB60
  2160.  
  2161.         CMP #$03    
  2162.         BEQ ISCNK1    ;$EB60
  2163.  
  2164.         ORA SHFTFL    
  2165.         STA SHFTFL    
  2166.         BPL ISCNK1+2    ;$EB62
  2167.  
  2168. ISCNK1            
  2169.         STY KEYDN    
  2170.         PLA    
  2171.         INY    
  2172.         CPY #$41    
  2173.         BCS ISCNEXIT    ;$EB71
  2174.  
  2175.         DEX    
  2176.         BNE ISCKLP2    ;$EB4A
  2177.  
  2178.         SEC    
  2179.         ROL D2ORB    
  2180.         BNE ISCKLP1    ;$EB40
  2181.  
  2182. ISCNEXIT            
  2183.         JMP (FCEVAL)    
  2184. ;            
  2185. ; Process key image             
  2186. ;            
  2187. PROCKY            
  2188.         LDY KEYDN    
  2189.         LDA (KEYTAB),Y
  2190.         TAX    
  2191.         CPY CURKEY    
  2192.         BEQ PROCK1    ;$EB84
  2193.  
  2194.         LDY #$10    
  2195.         STY KRPTDL    
  2196.         BNE PROCK4    ;$EBBA
  2197.  
  2198. PROCK1            
  2199.         AND #%01111111    ;$7F
  2200.         BIT KEYRPT    
  2201.         BMI PROCK2    ;$EBA1
  2202.         BVS PROCK5    ;$EBD6
  2203.  
  2204.         CMP #$7F    
  2205.  
  2206. PROCK1A            
  2207.         BEQ PROCK4    ;$EBBA
  2208.  
  2209.         CMP #$14    
  2210.         BEQ PROCK2    ;$EBA1
  2211.  
  2212.         CMP #$20    
  2213.         BEQ PROCK2    ;$EBA1
  2214.  
  2215.         CMP #$1D    
  2216.         BEQ PROCK2    ;$EBA1
  2217.  
  2218.         CMP #$11    
  2219.         BNE PROCK5    ;$EBD6
  2220.  
  2221. PROCK2            
  2222.         LDY KRPTDL    
  2223.         BEQ PROCK3    ;$EBAB
  2224.  
  2225.         DEC KRPTDL    
  2226.         BNE PROCK5    ;$EBD6
  2227.  
  2228. PROCK3            
  2229.         DEC KRPTSP    
  2230.         BNE PROCK5    ;$EBD6
  2231.  
  2232.         LDY #$04    
  2233.         STY KRPTSP    
  2234.         LDY KEYCNT    
  2235.         DEY    
  2236.         BPL PROCK5    ;$EBD6
  2237.  
  2238. PROCK4            
  2239.         LDY KEYDN    
  2240.         STY CURKEY    
  2241.         LDY SHFTFL    
  2242.         STY LSSHFT    
  2243.         CPX #$FF    
  2244.         BEQ PROCK5    ;$EBD6
  2245.  
  2246.         TXA    
  2247.         LDX KEYCNT    
  2248.         CPX KBMAXL    
  2249.         BCS PROCK5    ;$EBD6
  2250.  
  2251.         STA KBUFFR,X
  2252.         INX    
  2253.         STX KEYCNT    
  2254.  
  2255. PROCK5            
  2256.         LDA #$F7    
  2257.         STA D2ORB    
  2258.         RTS    
  2259.  
  2260. ;            
  2261. ; Unknown function (no apparent access)            
  2262. ;
  2263. PROCMORE
  2264.         LDA SHFTFL    
  2265.         CMP #$03    
  2266.         BNE PROCK6A    ;$EC0F
  2267.  
  2268.         CMP LSSHFT    
  2269.         BEQ PROCK5    ;$EBD6
  2270.  
  2271.         LDA SHMODE    
  2272.         BMI PROCKEX    ;$EC43
  2273.  
  2274.         .db $ea, $ea, $ea, $ea, $ea, $ea, $ea, $ea
  2275.         .db $ea, $ea, $ea, $ea, $ea, $ea, $ea, $ea
  2276.         .db $ea, $ea, $ea
  2277.  
  2278.         LDA VRSTRT    
  2279.         EOR #$02    
  2280.         STA VRSTRT    
  2281.  
  2282.         .db $ea, $ea, $ea, $ea
  2283.  
  2284. PROCK6            
  2285.         JMP PROCKEX    ;$EC43
  2286.  
  2287. PROCK6A            
  2288.         ASL A    
  2289.         CMP #$08    
  2290.         BCC $+6    ;$EC1B
  2291.  
  2292.         LDA #$06    
  2293.  
  2294.         .db $ea, $ea, $ea, $ea, $ea, $ea, $ea, $ea
  2295.         .db $ea, $ea, $ea, $ea, $ea, $ea, $ea, $ea
  2296.         .db $ea, $ea, $ea, $ea, $ea, $ea, $ea, $ea
  2297.         .db $ea, $ea, $ea, $ea, $ea, $ea, $ea, $ea
  2298.         .db $ea, $ea
  2299.  
  2300.         TAX
  2301.         LDA KDECOD,X
  2302.         STA KEYTAB
  2303.         LDA KDECOD+1,X
  2304.         STA KEYTAB+1
  2305.  
  2306. PROCKEX        
  2307.         JMP PROCKY
  2308.  
  2309. ;====================================================================            
  2310. ; KDECOD - Pointers to keyboard decode tables            
  2311. ;            
  2312. KDECOD            
  2313.         .dw KDECD1    ;$5E, $EC Unshifted
  2314.         .dw KDECD2    ;$9F, $EC Shifted
  2315.         .dw KDECD3    ;$E0, $EC Commodore
  2316.         .dw KDECD5    ;$A3, $ED Control
  2317.         .dw KDECD1    ;$EC5E Unshifted
  2318.         .dw KDECD2    ;$EC9F Shifted
  2319.         .dw KDECD4    ;$69, $ED Decode
  2320.         .dw KDECD5    ;$EDA3 Control
  2321.         .dw GRTXTF    ;$21, $ED Graphics/text control
  2322.         .dw KDECD4    ;$ED69 Decode
  2323.         .dw KDECD4    ;$ED69 Decode
  2324.         .dw KDECD5    ;$EDA3 Control
  2325. ;        
  2326. ;Unshifted        
  2327. ;        
  2328. KDECD1        
  2329.         .db $31, $33, $35, $37, $39, $2B
  2330.         .db $5C, $14, $5F, $57, $52, $59, $49, $50
  2331.         .db $2A, $0D, $04, $41, $44, $47, $4A, $4C
  2332.         .db $3B, $1D, $03, $01, $58, $56, $4E, $2C
  2333.         .db $2F, $11, $20, $5A, $43, $42, $4D, $2E
  2334.         .db $01, $85, $02, $53, $46, $48, $4B, $3A
  2335.         .db $3D, $86, $51, $45, $54, $55, $4F, $40
  2336.         .db $5E, $87, $32, $34, $36, $38, $30, $2D
  2337.         .db $13, $88, $FF
  2338. ;        
  2339. ;shifted        
  2340. ;        
  2341. KDECD2        
  2342.         .db $21, $23, $25, $27, $29
  2343.         .db $DB, $A9, $94, $5F, $D7, $D2, $D9, $C9
  2344.         .db $D0, $C0, $8D, $04, $C1, $C4, $C7, $CA
  2345.         .db $CC, $5D, $9D, $83, $01, $D8, $D6, $CE
  2346.         .db $3C, $3F, $91, $A0, $DA, $C3, $C2, $CD
  2347.         .db $3E, $01, $89, $02, $D3, $C6, $C8, $CB
  2348.         .db $5B, $3D, $8A, $D1, $C5, $D4, $D5, $CF
  2349.         .db $BA, $DE, $8B, $22, $24, $26, $28, $30
  2350.         .db $DD, $93, $8C, $FF 
  2351. ;        
  2352. ;Commodore        
  2353. ;        
  2354. KDECD3        
  2355.         .db $21, $23, $25, $27
  2356.         .db $29, $A6, $A8, $94, $5F, $B3, $B2, $B7
  2357.         .db $A2, $AF, $DF, $8D, $04, $B0, $AC, $A5
  2358.         .db $B5, $B6, $5D, $9D, $83, $01, $BD, $BE
  2359.         .db $AA, $3C, $3F, $91, $A0, $AD, $BC, $BF
  2360.         .db $A7, $3E, $01, $89, $02, $AE, $BB, $B4
  2361.         .db $A1, $5B, $3D, $8A, $AB, $B1, $A3, $B8
  2362.         .db $B9, $A4, $DE, $8B, $22, $24, $26, $28
  2363.         .db $30, $DC, $93, $8C, $FF
  2364. ;            
  2365. ;Graphics/tect control code            
  2366. ;@$ed21            
  2367. GRTXTF            
  2368.         cmp #$0e    
  2369.         bne G1    ; +09
  2370.  
  2371.         lda #$02    
  2372.         ora VRSTRT    
  2373.         sta VRSTRT    
  2374.         jmp CMD42A    
  2375.  
  2376. G1            ;$ED30
  2377.         cmp #$8E    
  2378.         bne G2    
  2379.  
  2380. G1A            
  2381.         lda #$fd    
  2382.         and VRSTRT    
  2383.         sta VRSTRT    
  2384.  
  2385. G1A1            
  2386.         jmp CMD42A    
  2387.  
  2388. G2            ;$ED3F
  2389.         cmp #$08    
  2390.         bne G3    
  2391.         lda #$80    
  2392.         ora SHMODE    
  2393.         sta SHMODE    
  2394.         bmi G1A1    ;$-ef
  2395.  
  2396. G3            ;$ED4D
  2397.         cmp #$09    
  2398.         bne G1A1    ;$-eb
  2399.         lda #%01111111    ;$7f
  2400.         and SHMODE    
  2401.         sta SHMODE    
  2402.         bpl G1A1    ;$-e1
  2403.  
  2404. G4            
  2405.         inx    
  2406.  
  2407. GRTX2            
  2408.         lda SLLTBL,x
  2409.         ora #%10000000    ;$80
  2410.         sta SLLTBL,x
  2411.         dex    
  2412.         lda LINLEN    
  2413.         clc    
  2414.         jmp CSRMIN    ;$e715
  2415.  
  2416. ;ED21             
  2417. ;ED24             
  2418. ;ED2C             
  2419. ;ED34             
  2420. ;ED3C             
  2421. ;ED44         
  2422. ;ED4C         
  2423. ;ED54         
  2424. ;ED5C         
  2425. ;ED64         
  2426. ;        
  2427. ;Keyboard decoding table - Shifted        
  2428. ;        
  2429. KDECD4        
  2430.         .db $FF, $FF, $FF
  2431.         .db $FF, $FF, $FF, $FF, $FF, $FF, $04, $FF
  2432.         .db $FF, $FF, $FF, $FF, $E2, $9D, $83, $01
  2433.         .db $FF, $FF, $FF, $FF, $FF, $91, $A0, $FF
  2434.         .db $FF, $FF, $FF, $EE, $01, $89, $02, $FF
  2435.         .db $FF, $FF, $FF, $E1, $FD, $8A, $FF, $FF
  2436.         .db $FF, $FF, $FF, $B0, $E0, $8B, $F2, $F4
  2437.         .db $F6, $FF, $F0, $ED, $93, $8C, $FF 
  2438. ;        
  2439. ;Keyboard decoding table - control        
  2440. ;        
  2441. KDECD5        
  2442.         .db $90
  2443.         .db $1C, $9C, $1F, $12, $FF, $FF, $FF, $06
  2444.         .db $FF, $12, $FF, $FF, $FF, $FF, $FF, $FF
  2445.         .db $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF
  2446.         .db $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF
  2447.         .db $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF
  2448.         .db $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF
  2449.         .db $FF, $FF, $FF, $FF, $FF, $FF, $FF, $05
  2450.         .db $9F, $1E, $9E, $92, $FF, $FF, $FF, $FF
  2451. ;        
  2452. ;VIC chip setup table        
  2453. ;        
  2454. VICSUP        
  2455.         .db $05, $19, $16, $2E, $00, $C0, $00, $00
  2456.         .db $00, $00, $00, $00, $00, $00, $00, $1B
  2457. ;        
  2458. ;Shift-run equivalent        
  2459. ;        
  2460. RUNSHF        
  2461.         .db $4C, $4F, $41, $44, $0D, $52, $55, $4E
  2462.         .db $0D 
  2463. ;        
  2464. ;Low-byte screen address        
  2465. ;        
  2466. LBSCAD        
  2467.         .db $00, $16, $2C, $42, $58, $6E, $84
  2468.         .db $9A, $B0, $C6, $DC, $F2, $08, $1E, $34
  2469.         .db $4A, $60, $76, $8C, $A2, $B8, $CE, $E4
  2470.  
  2471.  
  2472. ;====================================================================            
  2473. ; ITALK - Send TALK command on serial bus (internal)            
  2474. ;            
  2475. ITALK            
  2476.         ORA #%01000000    ;$40
  2477.  
  2478. ;====================================================================            
  2479. ; ILISTN - Send LISTEN command on serial bus (internal)            
  2480. ;            
  2481. ILISTN            
  2482.         .db $2C    ;BIT $2009
  2483.         ORA #%00100000    ;$20
  2484.         JSR SBIDLE    ;test IER for bus idle
  2485.  
  2486. LSNOIDLE            
  2487.         PHA    
  2488.         BIT C3PO    
  2489.         BPL LISN1    ;$EE2B
  2490.  
  2491.         SEC    
  2492.         ROR SBITCF    
  2493.         JSR OTDSBU    
  2494.         LSR C3PO    
  2495.         LSR SBITCF    
  2496.  
  2497. LISN1            
  2498.         PLA    
  2499.         STA BSOUT    
  2500.         JSR SOUT1    ;send DATA=1
  2501.         CMP #%00111111    ;$3F
  2502.         BNE LISN2    ;$EE38
  2503.  
  2504.         JSR SCLK1    ;tsend SCLK=1
  2505.  
  2506. LISN2            
  2507.         LDA D1ORAH    
  2508.         ORA #%10000000    ;$B0/80?
  2509.         STA D1ORAH    
  2510.  
  2511. ILISTEX            
  2512.         JSR SCLK0    ;send SCLK=0
  2513.         JSR SOUT1    ;send DATA=1
  2514.         JSR DELAY    ;wait
  2515.  
  2516.  
  2517. ;====================================================================            
  2518. ; OTDSBU- Send data on serial bus            
  2519. ;            
  2520. OTDSBU            
  2521.         SEI    
  2522.         JSR SOUT1    
  2523.         JSR SDCLK    
  2524.         LSR A    
  2525.         BCS FLGERR    
  2526.  
  2527.         JSR SCLK1    
  2528.         BIT SBITCF    
  2529.         BPL OTDLP3    ;$EE66
  2530.  
  2531. OTDLP1            
  2532.         JSR SDCLK    
  2533.         LSR A    
  2534.         BCC OTDLP1    ;$EE5A
  2535.  
  2536. OTDLP2            
  2537.         JSR SDCLK    
  2538.         LSR A    
  2539.         BCS OTDLP2    ;$EE60
  2540.  
  2541. OTDLP3            
  2542.         JSR SDCLK    
  2543.         LSR A    
  2544.         BCC OTDLP3    ;$EE66
  2545.  
  2546.         JSR SCLK0    
  2547.         LDA #$08    
  2548.         STA CNTDN    
  2549.  
  2550. OTDLP4            
  2551.         LDA D1ORAH    
  2552.         CMP D1ORAH    
  2553.         BNE OTDLP4    ;$EE73
  2554.  
  2555.         LSR A    
  2556.         LSR A    
  2557.         BCC FLGER03    ;$EEB7
  2558.  
  2559.         ROR BSOUT    
  2560.         BCS OTDSB1    ;$EE8B
  2561.  
  2562.         JSR SOUT0    
  2563.         BNE OTDSB2    ;$EE8B
  2564.  
  2565. OTDSB1            
  2566.         JSR SOUT1    
  2567.  
  2568. OTDSB2            
  2569.         JSR SCLK1    
  2570.  
  2571.         .db $EA, $EA, $EA, $EA
  2572.  
  2573.         LDA D2PCR    
  2574.         AND #%11011111    ;$DF
  2575.         ORA #%00000010    ;$02
  2576.         STA D2PCR    
  2577.         DEC CNTDN    
  2578.         BNE OTDLP4    ;$EE73
  2579.  
  2580.         LDA #$04    
  2581.         STA D2TM2H    
  2582.  
  2583. OTDLP5            
  2584.         LDA D2IFR    
  2585.         AND #%00100000    ;$20
  2586.         BNE FLGER03    ;$EEB7
  2587.  
  2588.         JSR SDCLK    
  2589.         LSR A    
  2590.         BCS OTDLP5    ;$EEA5
  2591.         CLI    
  2592.         RTS    
  2593.  
  2594. ;====================================================================            
  2595. ; FLGERR - Flag errors            
  2596. ;            
  2597. FLGERR            
  2598.         LDA #$80    ; Error $80 - device not present
  2599.         .db $2C    
  2600.  
  2601. FLGER03            
  2602.         LDA #$03    ; Error $03 - write timeout
  2603.         JSR ISETMS1    ;$FE6A External entry into ISETMS
  2604.         CLI    
  2605.         CLC    
  2606.         BCC IUNLSN+5    ;$EF09
  2607.  
  2608.  
  2609. ;====================================================================            
  2610. ; ISECND - Send LISTEN secondary address (internal)            
  2611. ;            
  2612. ISECND            
  2613.         STA BSOUT    
  2614.         JSR ILISTEX    ;$EE40 external entry into ILISTN
  2615.             ;CLK=0, DATA=1, pause
  2616. ;            
  2617. ; CLRATN - Clear the ATN line            
  2618. ;            
  2619. CLRATN            
  2620.         LDA D1ORAH    ; release ATN
  2621.         AND #%01111111    ;$7F
  2622.         STA D1ORAH    
  2623.         RTS    
  2624.  
  2625. ;====================================================================            
  2626. ; ITKSA - Sent TALK secondary address (internal)            
  2627. ;            
  2628. ITKSA            
  2629.         STA BSOUT         
  2630.         JSR ILISTEX    ;$EE40 external entry into ILISTN
  2631.             ;CLK=0, DATA=1, pause
  2632. ;            
  2633. ; Wait for CLK            
  2634. ;            
  2635. CLKWAIT            
  2636.         SEI    
  2637.         JSR SOUT0    
  2638.         JSR CLRATN    
  2639.         JSR SCLK1    
  2640.  
  2641. CLKWAIT1            
  2642.         JSR SDCLK    
  2643.         BCS CLKWAIT1    ;$EEDD
  2644.         CLI    
  2645.         RTS    
  2646.  
  2647.  
  2648. ;====================================================================            
  2649. ; ICIOUT - Send serial deferred (internal)            
  2650. ;            
  2651. ICIOUT            
  2652.         BIT C3PO           
  2653.         BMI ICIOUT1    ;$EEED
  2654.         SEC    
  2655.         ROR C3PO    
  2656.         BNE ICIOUT2    ;$EEF2
  2657.  
  2658. ICIOUT1            
  2659.         PHA    
  2660.         JSR OTDSBU    
  2661.         PLA    
  2662.  
  2663. ICIOUT2            
  2664.         STA BSOUT    
  2665.         CLC    
  2666.         RTS    
  2667.  
  2668.  
  2669. ;====================================================================            
  2670. ; IUNTLK - Send UNTALK on serial bus (internal)            
  2671. ;            
  2672. IUNTLK            
  2673.         JSR SCLK0    
  2674.         LDA D1ORAH    
  2675.         ORA #%10000000    ;$B0/80
  2676.         STA D1ORAH    
  2677.  
  2678.         LDA #$5F    ;entry 1
  2679.         .db $2C    ;really BIT $3FA9 to skip EF04
  2680.  
  2681. ;====================================================================            
  2682. ; IUNLSN - Send UNLISTEN on serial bus (internal)            
  2683. ;            
  2684. IUNLSN            
  2685.         LDA #$3F    ;entry 2
  2686.         JSR LSNOIDLE    ;$EE1C skip serial idle test
  2687.         JSR CLRATN    
  2688.         TXA    
  2689.         LDX #$0B    
  2690.  
  2691. IUNLP1            
  2692.         DEX    
  2693.         BNE IUNLP1    ;$EF0F
  2694.         TAX    
  2695.         JSR SCLK1    
  2696.         JMP SOUT1    
  2697.  
  2698. ;====================================================================            
  2699. ; IACPTR - Receive from serial bus (internal)            
  2700. ;            
  2701. IACPTR            
  2702.         SEI               
  2703.         LDA #$00    
  2704.         STA CNTDN    
  2705.         JSR SCLK1    
  2706.  
  2707. IACPLP1            
  2708.         JSR SDCLK    
  2709.         BCC IACPLP1    ;$EF21
  2710.  
  2711.         JSR SOUT1    
  2712.  
  2713. IACPTR1            
  2714.         LDA #$01    
  2715.         STA D2TM2H    
  2716.  
  2717. IACPLP2            
  2718.         LDA D2IFR    
  2719.         AND #%00100000    ;$20
  2720.         BNE IACPTR2    ;$EF3C
  2721.  
  2722.         JSR SDCLK    
  2723.         BCS IACPLP2    ;$EF2E
  2724.         BCC IACPTR3A    ;$EF54
  2725.  
  2726. IACPTR2            
  2727.         LDA CNTDN    
  2728.         BEQ IACPTR3    ;$EF45
  2729.  
  2730.         LDA #$02    ;set eerror code to 2
  2731.         JMP FLGER03+2    ;$EEB9 
  2732.  
  2733. IACPTR3            
  2734.         JSR SOUT0    
  2735.         JSR IUNLSN+8    ;$EF0C
  2736.         LDA #$40    
  2737.         JSR ISETMS+4    ;$FE6A
  2738.         INC CNTDN    
  2739.         BNE IACPTR1    ;$EF29
  2740.  
  2741. IACPTR3A            
  2742.         LDA #$08    
  2743.  
  2744. IACPLP3            
  2745.         STA CNTDN    
  2746.  
  2747. IACPLP4            
  2748.         LDA D1ORAH    
  2749.         CMP D1ORAH    
  2750.         BNE IACPLP4    ;$EF56
  2751.  
  2752.         LSR A    
  2753.         BCC IACPLP4    ;$EF58
  2754.  
  2755.         LSR A    
  2756.         ROR CYCLE    
  2757.  
  2758. IACPLP5            
  2759.         LDA D1ORAH    
  2760.         CMP D1ORAH    
  2761.         BNE IACPLP5    ;$EF66
  2762.  
  2763.         LSR A    
  2764.         BCS IACPLP5    ;$EF66
  2765.  
  2766.         DEC CNTDN    
  2767.         BNE IACPLP4    ;$EF58
  2768.  
  2769.         JSR SOUT0    
  2770.         LDA CSTAT    
  2771.         BEQ IACPEX    ;$EF7F
  2772.  
  2773.         JSR IUNLSN+8    
  2774.  
  2775. IACPEX            
  2776.         LDA CYCLE    
  2777.         CLI    
  2778.         CLC    
  2779.         RTS    
  2780.  
  2781.  
  2782. ;====================================================================            
  2783. ; SCLK1 - Set Serial CLK 1 (inverted logic)            
  2784. ;            
  2785. SCLK1            
  2786.         LDA D2PCR    
  2787.         AND #%11111101    ;$FD
  2788.         STA D2PCR    
  2789.         RTS    
  2790.  
  2791.  
  2792. ;====================================================================            
  2793. ; SCLK0 - Set Serial CLK 0            
  2794. ;            
  2795. SCLK0            
  2796.         LDA D2PCR    
  2797.         ORA #%00000010    ;$02
  2798.         STA D2PCR    
  2799.         RTS    
  2800.  
  2801. ;====================================================================            
  2802. ; DELAY - Delay 1ms            
  2803. ;            
  2804. DELAY            
  2805.         LDA #$04    
  2806.         STA D2TM2H    
  2807.  
  2808. DLYLOOP            
  2809.         LDA D2IFR    
  2810.         AND #%00100000    ;$20
  2811.         BEQ DLYLOOP    ;$EF9B
  2812.         RTS    
  2813.  
  2814.  
  2815. ;====================================================================            
  2816. ; SSEND - RS-232 Send            
  2817. ;            
  2818. SSEND            
  2819.         LDA BITTS    
  2820.         BEQ SSNDN    
  2821.         BMI SSEND1    ;$EFE8
  2822.  
  2823.         LSR RODATA    
  2824.         LDX #$00    
  2825.         BCC SSEND2    ;$EFB0
  2826.  
  2827.         DEX    
  2828.  
  2829. SSEND2            
  2830.         TXA    
  2831.         EOR ROPRTY    
  2832.         STA ROPRTY    
  2833.         DEC BITTS    
  2834.         BEQ SSEND3    ;$EFBF
  2835.  
  2836. SSEND2A            
  2837.         TXA    
  2838.         AND #%00100000    ;$20
  2839.         STA NXTBIT    
  2840.         RTS    
  2841.  
  2842. SSEND3            
  2843.         LDA #$20    
  2844.         BIT M51CDR    
  2845.         BEQ SSEND5    ;$EFDA
  2846.         BMI SSEND7    ;$EFE4
  2847.         BVS SSEND6    ;$EFDE
  2848.  
  2849.         LDA ROPRTY    
  2850.         BNE SSEND4A    ;$EFCF
  2851.  
  2852. SSEND4            
  2853.         DEX    
  2854.  
  2855. SSEND4A            
  2856.         DEC BITTS    
  2857.         LDA M51CTR    
  2858.         BPL SSEND2A    ;$EFB9
  2859.  
  2860.         DEC BITTS    
  2861.         BNE SSEND2A    ;$EFB9
  2862.  
  2863. SSEND5            
  2864.         INC BITTS    
  2865.         BNE SSEND4    ;$EFCE
  2866.  
  2867. SSEND6            
  2868.         LDA ROPRTY    
  2869.         BEQ SSEND4A    ;$EFCF
  2870.         BNE SSEND4    ;$EFCE
  2871.  
  2872. SSEND7            
  2873.         BVS SSEND4A    ;$EFCF
  2874.         BVC SSEND4    ;$EFCE
  2875.  
  2876. SSEND1            
  2877.         INC BITTS    
  2878.         LDX #$FF    
  2879.         BNE SSEND2A    ;$EFB9
  2880.  
  2881.  
  2882. ;====================================================================            
  2883. ; SSNDN - Send new RS-232 byte            
  2884. ;            
  2885. SSNDN            
  2886.         LDA M51CDR    
  2887.         LSR A    
  2888.         BCC SSNDN1    ;$EFFB
  2889.  
  2890.         BIT D2ORB    
  2891.         BPL DSRERR    
  2892.         BVC CTSERR    
  2893.  
  2894. SSNDN1            
  2895.         LDA #$00    
  2896.         STA ROPRTY    
  2897.         STA NXTBIT    
  2898.         LDX BITNUM    
  2899.         STX BITTS    
  2900.         LDY RODBS    
  2901.         CPY RODBE    
  2902.         BEQ DISTIM    
  2903.  
  2904.         LDA (ROBUF),Y
  2905.         STA RODATA    
  2906.         INC RODBS    
  2907.         RTS    
  2908.  
  2909. ;====================================================================            
  2910. ; DSRERR - No DSR/CTS errors            
  2911. ;            
  2912. DSRERR            
  2913.         LDA #$40    ; no DSR
  2914.         .db $2C    ;bit $10a9
  2915. ;            
  2916. ; CTSERR - CTS Error            
  2917. ;            
  2918. CTSERR            
  2919.         LDA #$10    ; no CTS
  2920.         ORA RSSTAT    
  2921.         STA RSSTAT    
  2922. ;            
  2923. ; DISTIM - Disable timer            
  2924. ;            
  2925. DISTIM            
  2926.         LDA #$40    ; disable timer
  2927.         STA D1IER    
  2928.         RTS    
  2929.  
  2930.  
  2931. ;====================================================================            
  2932. ; BITCNT - Compute bit count            
  2933. ;            
  2934. BITCNT            
  2935.         LDX #$09    
  2936.         LDA #$20    
  2937.         BIT M51CTR    
  2938.         BEQ BITCNT1    ;$F031
  2939.  
  2940.         DEX    
  2941.  
  2942. BITCNT1            
  2943.         BVC BITEXIT    ;$F035
  2944.         DEX    
  2945.         DEX    
  2946.  
  2947. BITEXIT            
  2948.         RTS    
  2949.  
  2950.  
  2951. ;====================================================================            
  2952. ; SERRX - RS-232 Receive            
  2953. ;            
  2954. SERRX            
  2955.         LDX RINONE    
  2956.         BNE PROCSB    
  2957.  
  2958.         DEC BITCI    
  2959.         BEQ PROCSB1    ;$F06F
  2960.         BMI SERRX1    ;$F04D
  2961.  
  2962.         LDA INBIT    
  2963.         EOR RIPRTY    
  2964.         STA RIPRTY    
  2965.         LSR INBIT    
  2966.         ROR RIDATA    
  2967.  
  2968. SERRXEX            
  2969.         RTS    
  2970.  
  2971.         DEC BITCI    
  2972.  
  2973. SERRX1            
  2974.         LDA INBIT    
  2975.         BEQ PRSBEX    ;$F0B3
  2976.         LDA M51CTR    
  2977.         ASL A    
  2978.         LDA #$01    
  2979.         ADC BITCI    
  2980.         BNE SERRXEX    ;$F04A
  2981. ;        
  2982. ; RXSET - Setup to receive        
  2983. ;        
  2984. RXSET        
  2985.         LDA #$90
  2986.         STA D1IER
  2987.         STA RINONE
  2988.         LDA #$20
  2989.         STA D1IER
  2990.         RTS
  2991.  
  2992.  
  2993. ;====================================================================        
  2994. ; PROCSB - Process RS-232 byte        
  2995. ;        
  2996. PROCSB        
  2997.         LDA INBIT    
  2998.         BNE RXSET    
  2999.         STA RINONE    
  3000.         RTS    
  3001.  
  3002. PROCSB1            
  3003.         LDY RIDBE    
  3004.         INY    
  3005.         CPY RIDBS    
  3006.         BEQ SBE04    ;$F0A2
  3007.  
  3008.         STY RIDBE    
  3009.         DEY    
  3010.         LDA RIDATA    
  3011.         LDX BITNUM    
  3012.  
  3013. PRSBLP1            
  3014.         CPX #$09    
  3015.         BEQ PROCSB2    ;$F089
  3016.  
  3017.         LSR A    
  3018.         INX    
  3019.         BNE PRSBLP1    ;$F081
  3020.  
  3021. PROCSB2            
  3022.         STA (RIBUF),Y
  3023.         LDA #$20    
  3024.         BIT M51CDR    
  3025.         BEQ SERRX1-2    ;$F04B
  3026.         BMI SERRXEX    ;$F04A RTS
  3027.  
  3028.         LDA INBIT    
  3029.         EOR RIPRTY    
  3030.         BEQ PROC_S1    ;$F09D
  3031.         BVS SERRXEX    ;$F04A
  3032.  
  3033.         .db $2C    
  3034.  
  3035. PROC_S1            
  3036.         BVC SERRXEX    ;BIT $A850 = BVC+A8 f14b
  3037.  
  3038. SBE01            
  3039.         LDA #$01    
  3040.         .db $2C    
  3041.  
  3042. SBE04            
  3043.         LDA #$04    ;BIT $04A9
  3044.         .db $2C    
  3045.  
  3046. SBE80            
  3047.         LDA #$80    ;BIT $80A9
  3048.         .db $2C    
  3049.  
  3050. SBE02            
  3051.         LDA #$02    ;BIT $02A9
  3052.         ORA RSSTAT    
  3053.         STA RSSTAT    
  3054.         JMP RXSET    
  3055.  
  3056. PRSBEX            
  3057.         LDA RIDATA    
  3058.         BNE SBE02    ;$F0A8
  3059.         BEQ SBE80    ;$F0A5
  3060.         JMP IOERMS9    ;$F796
  3061.  
  3062.  
  3063. ;====================================================================            
  3064. ; SSUBBT - Submit to RS-232            
  3065. ;            
  3066. SSUBBT            
  3067.         STA OUTDEV    
  3068.         LDA M51CDR    
  3069.         LSR A    
  3070.         BCC SSRETC    ;$F0EB return OK
  3071.  
  3072.         LDA #$02    
  3073.         BIT D1ORB    
  3074.         BPL SSRETE    ;$F0E8 return DSR error
  3075.         BNE SSRETC    ;$F0EB
  3076.  
  3077. SSLOOP1            
  3078.         LDA D1IER    
  3079.         AND #%00110000    ;$30
  3080.         BNE SSLOOP1    ;$F0CD
  3081.  
  3082. SSLOOP2            
  3083.         BIT D1ORB    
  3084.         BVS SSLOOP2    ;$F0D4
  3085.  
  3086.         LDA D1ORB    
  3087.         ORA #$02    
  3088.         STA D1ORB    
  3089.  
  3090. SSLOOP3            
  3091.         BIT D1ORB    
  3092.         BVS SSRETC    ;$F0EB
  3093.         BMI SSLOOP3    ;$F0E1
  3094.  
  3095. SSRETE            
  3096.         JSR DSRERR    ;set DSR error
  3097.  
  3098. SSRETC            
  3099.         CLC    
  3100.         RTS    
  3101.  
  3102.  
  3103. ;====================================================================            
  3104. ; SSENDB - Send to RS-232 buffer            
  3105. ;            
  3106. SSENDB            
  3107.         LDY RODBE    
  3108.         INY    
  3109.         CPY RODBS    
  3110.         BEQ SSENDB    
  3111.  
  3112.         STY RODBE    
  3113.         DEY    
  3114.         STA (ROBUF),Y
  3115.         BIT D1IER    
  3116.         BVC SNDB1    ;$F102
  3117.  
  3118.         RTS    
  3119.  
  3120. SNDB1            
  3121.         LDA BAUDOF    
  3122.         STA D1TM1L    
  3123.         LDA BAUDOF+1    
  3124.         STA D1TM1L+1    
  3125.         LDA #%11000000    ;$C0
  3126.         STA D1IER    
  3127.         JMP SSNDN    
  3128.  
  3129.  
  3130. ;====================================================================            
  3131. ; SERINP - Input from RS-232            
  3132. ;            
  3133. SERINP            
  3134.         STA INDEV    
  3135.         LDA M51CDR    
  3136.         LSR A    
  3137.         BCC SINPEX2    ;$F146
  3138.  
  3139.         AND #%00001000    ;$08
  3140.         BEQ SINPEX2    ;$F146
  3141.  
  3142.         LDA #$02    
  3143.         BIT D1ORB    
  3144.         BPL SSRETE    ;$F0E8 DSR error
  3145.         BEQ SINRETC    ;$F144
  3146.  
  3147. SINPLP1            
  3148.         BIT D1IER    
  3149.         BVS SINPLP1    ;$F12B
  3150.  
  3151.         LDA D1ORB    
  3152.         AND #%11111101    ;$FD
  3153.         STA D1ORB    
  3154.  
  3155. SINLP2            
  3156.         LDA D1ORB    
  3157.         AND #%00000100    ;$04
  3158.         BEQ SINLP2    ;$F138
  3159.  
  3160. SINPEX1            
  3161.         LDA #%10010000    ;$90
  3162.         STA D1IER    
  3163.  
  3164. SINRETC            
  3165.         CLC    
  3166.         RTS    
  3167.  
  3168. SINPEX2            
  3169.         LDA D1IER    
  3170.         AND #%00110000    ;$30
  3171.         BEQ SINPEX1    ;$F13F
  3172.         CLC    
  3173.         RTS    
  3174.  
  3175.  
  3176. ;====================================================================            
  3177. ; SERGET - Get from RS-232            
  3178. ;            
  3179. SERGET            
  3180.         LDY RIDBS    
  3181.         CPY RIDBE    
  3182.         BEQ SERGET1    ;$F15D
  3183.  
  3184.         LDA (RIBUF),Y
  3185.         INC RIDBS    
  3186.         RTS    
  3187.  
  3188. SERGET1            
  3189.         LDA #$00    
  3190.         RTS    
  3191.  
  3192.  
  3193. ;====================================================================            
  3194. ; SBIDLE - Serial bus idle            
  3195. ;            
  3196. SBIDLE            
  3197.         PHA    
  3198.         LDA D1IER    
  3199.         BEQ SBIDLEX    ;$F172
  3200.  
  3201. SBIDLLP            
  3202.         LDA D1IER    
  3203.         AND #$60    
  3204.         BNE SBIDLLP    ;$F166
  3205.  
  3206.         LDA #$10        
  3207.         STA D1IER        
  3208.  
  3209. SBIDLEX                
  3210.         PLA        
  3211.         RTS        
  3212.  
  3213.  
  3214. ;====================================================================                
  3215. ; KIOMSG - KERNEL I/O messages                
  3216. ;                
  3217. KIOMSG                
  3218.         .db $0D, "I/O ERROR ", $A3        ;00h
  3219.  
  3220.         .db $0D, "SEARCHING", $A0, "FOR", $A0    ;0Ch    
  3221.  
  3222.         .db $0D, "PRESS PLAY ON TAP", $C5    ;1Bh        
  3223.  
  3224.         .db "PRESS RECORD & PLAY ON TAP", $C5    ;2Eh        
  3225.  
  3226.         .db $0D, "LOADIN", $C7            ;49h
  3227.  
  3228.         .db $0D, "SAVING", $A0            ;51h
  3229.  
  3230.         .db $0D, "VERIFYIN", $C7            ;59h
  3231.  
  3232.         .db $0D, "FOUND", $A0            ;63h
  3233.  
  3234.         .db $0D, "OK", $8D            ;6Ah
  3235.  
  3236.  
  3237. ;====================================================================            
  3238. ; DIRMSG - Print message to screen if Direct            
  3239. ;            
  3240. DIRMSG            
  3241.         BIT CMDMOD    
  3242.         BPL MSGEXIT    ;$F1F3
  3243. ;            
  3244. ; MSG - Print message            
  3245. ;            
  3246. MSG            
  3247.         LDA KIOMSG,Y    ; Y = message#
  3248.         PHP    
  3249.         AND #%01111111    ;$7F clear character shift
  3250.         JSR CHROUT    
  3251.         INY    
  3252.         PLP    
  3253.         BPL MSG    
  3254.  
  3255. MSGEXIT            
  3256.         CLC    
  3257.         RTS    
  3258.  
  3259.  
  3260. ;====================================================================            
  3261. ; IGETIN - Get a byte (internal)            
  3262. ;            
  3263. IGETIN            
  3264.         LDA INDEV          
  3265.         BNE IGET232    ;$F201
  3266.         LDA KEYCNT    
  3267.         BEQ GTSCEXC    ;$F26A
  3268.         SEI    
  3269.         JMP LP2    
  3270.  
  3271. IGET232            
  3272.         CMP #$02    ;input from RS-232?
  3273.         BNE CHINSCRN    ;$F21D
  3274.  
  3275. IGETIN1            
  3276.         STY REGSAV    
  3277.         JSR SERGET    
  3278.         LDY REGSAV    
  3279.         CLC    
  3280.         RTS    
  3281.  
  3282.  
  3283. ;====================================================================            
  3284. ; ICHRIN - Input a byte (internal)            
  3285. ;            
  3286. ICHRIN            
  3287.         LDA INDEV    
  3288.         BNE CHINSCRN    ;$F21D not 0, must not be keyboard
  3289.  
  3290.         LDA CSRIDX    
  3291.         STA ICRCOL    
  3292.         LDA CURROW    
  3293.         STA ICRROW    
  3294.         JMP INSCR    ;$E64F
  3295.  
  3296. CHINSCRN            
  3297.         CMP #$03    ;screen?
  3298.         BNE ICHRIN1    ;$F22A
  3299.  
  3300.         STA INSRC    
  3301.         LDA LINLEN    
  3302.         STA EOLPTR    
  3303.         JMP INSCR    ;$E64F
  3304.  
  3305. ICHRIN1            
  3306.         BCS GTTSCH1    ;$F264
  3307.  
  3308.         CMP #$02    ;RS-232?
  3309.         BEQ GTSCHLP    ;$F26F
  3310.  
  3311.         STX REGSAV    
  3312.         JSR GTTSCH    
  3313.         BCS ICHREXIT    ;$F24D
  3314.  
  3315.         PHA    
  3316.         JSR GTTSCH    
  3317.         BCS ICHRIN3    ;$F24A
  3318.         BNE ICHRIN2    ;$F244
  3319.         LDA #$40    
  3320.         JSR ISETMS+4    ;$FE6A
  3321.  
  3322. ICHRIN2            
  3323.         DEC BUFPNT    
  3324.         LDX REGSAV    
  3325.         PLA    
  3326.         RTS    
  3327.  
  3328. ICHRIN3            
  3329.         TAX    
  3330.         PLA    
  3331.         TXA    
  3332.  
  3333. ICHREXIT            
  3334.         LDX REGSAV    
  3335.         RTS    
  3336.  
  3337.  
  3338. ;====================================================================            
  3339. ; GTTSCH - Get input from tape/serial/RS-232            
  3340. ;            
  3341. GTTSCH            
  3342.         JSR INCTPT    
  3343.         BNE GTTSCEX    ;$F260
  3344.         JSR TPREAD    
  3345.         BCS GTSCEXC+1    ;$F26B
  3346.         LDA #$00    
  3347.         STA BUFPNT    
  3348.         BEQ GTTSCH    ;$F250
  3349.  
  3350. GTTSCEX            
  3351.         LDA (TAPE1),Y
  3352.         CLC    
  3353.         RTS    
  3354.  
  3355. GTTSCH1            
  3356.         LDA CSTAT    
  3357.         BEQ GTTSCH2    ;$F26C
  3358.         LDA #$0D    
  3359.  
  3360. GTSCEXC            
  3361.         CLC    
  3362.         RTS    
  3363.  
  3364. GTTSCH2            
  3365.         JMP IACPTR    
  3366.  
  3367. GTSCHLP            
  3368.         JSR IGETIN1    
  3369.         BCS GTSCEX2    ;$F279
  3370.         CMP #$00    
  3371.         BEQ GTSCHLP    ;$F26F
  3372.  
  3373.         CLC    
  3374.  
  3375. GTSCEX2            
  3376.         RTS    
  3377.  
  3378.  
  3379. ;====================================================================            
  3380. ; ICHROT - Output one character (internal)            
  3381. ;            
  3382. ICHROT            
  3383.         PHA    
  3384.         LDA OUTDEV    
  3385.         CMP #$03    ;screen?
  3386.         BNE ONOTSCR    ;$F285 no, skip
  3387.  
  3388.         PLA    
  3389.         JMP OUTSCR    ;send to screen
  3390.  
  3391. ONOTSCR            
  3392.         BCC OTIEEE    ;$F28B serial - RS232 or IEEE?
  3393.  
  3394.         PLA    
  3395.         JMP ICIOUT    ;send to IEEE
  3396.  
  3397. OTIEEE            
  3398.         CMP #$02    
  3399.         BEQ OTRS232    ;$F2B9 send to RS232
  3400.  
  3401.         PLA    ;must be tape
  3402.  
  3403. OTIEEE1            
  3404.         STA TPTR1    
  3405.         PHA    
  3406.         TXA    
  3407.         PHA    
  3408.         TYA    
  3409.         PHA    
  3410.         JSR INCTPT    ;increment tape pointer
  3411.         BNE CHROT1    ;$F2AA
  3412.  
  3413.         JSR TPWRIT    ;write char
  3414.         BCS CHROT1A    ;$F2AF
  3415.  
  3416.         LDA #$02    
  3417.         LDY #$00    
  3418.         STA (TAPE1),Y
  3419.         INY    
  3420.         STY BUFPNT    
  3421.  
  3422. CHROT1            
  3423.         LDA TPTR1    
  3424.         STA (TAPE1),Y
  3425.         CLC    
  3426.  
  3427. CHROT1A            
  3428.         PLA    
  3429.  
  3430. CHROT2            
  3431.         TAY    
  3432.         PLA    
  3433.         TAX    
  3434.         PLA    
  3435.         BCC CHRRET    ;$F2B8
  3436.         LDA #$00    
  3437.  
  3438. CHRRET            
  3439.         RTS    
  3440.  
  3441. OTRS232            
  3442.         PLA    
  3443.         STX REGSAV    
  3444.         STY TPTR1    
  3445.         JSR SSENDB    
  3446.         LDX REGSAV    
  3447.         LDY TPTR1    
  3448.         CLC    
  3449.         RTS    
  3450.  
  3451.  
  3452. ;====================================================================            
  3453. ; ICHKIN - Set input device (internal)            
  3454. ;            
  3455. ICHKIN            
  3456.         JSR FIND    
  3457.         BEQ ICHKI1    ;$F2CF
  3458.         JMP IOERMS3    ;$F784
  3459.  
  3460. ICHKI1            
  3461.         JSR FLATRB    
  3462.         LDA CHANNL    
  3463.         BEQ ICHKI2    ;$F2EC
  3464.  
  3465.         CMP #$03    ;SCREEN?
  3466.         BEQ ICHKI2    ;$F2EC
  3467.         BCS ICHKI3    ;$F2F0 IEEE?
  3468.  
  3469.         CMP #$02    ;RS232?
  3470.         BNE ICHK_S1    ;$F2E3
  3471.         JMP SERINP    ;go to serial input
  3472.  
  3473. ICHK_S1            
  3474.         LDX SECADR    
  3475.         CPX #$60    
  3476.         BEQ ICHKI2    ;$F2EC
  3477.         JMP IOERMS6    ;$F78D
  3478.  
  3479. ICHKI2            
  3480.         STA INDEV    
  3481.         CLC    
  3482.         RTS    
  3483.  
  3484. ICHKI3        ;handle IEEE    
  3485.         TAX    
  3486.         JSR ITALK    
  3487.         LDA SECADR    
  3488.         BPL ICHKI4    ;$F2FE
  3489.         JSR CLKWAIT    
  3490.         JMP ICHKI4+3    ;$F301
  3491.  
  3492. ICHKI4            
  3493.         JSR ITKSA    
  3494.         TXA    
  3495.         BIT CSTAT    
  3496.         BPL ICHKI2    ;$F2EC
  3497.         JMP IOERMS5    ;$F78A
  3498.  
  3499.  
  3500. ;====================================================================            
  3501. ; ICHKOT - Set output device (internal)            
  3502. ;            
  3503. ICHKOT            
  3504.         JSR FIND    
  3505.         BEQ ICHKO_S1    ;$F311
  3506.         JMP IOERMS3    ;$F784 Press play
  3507.  
  3508. ICHKO_S1            
  3509.         JSR FLATRB    
  3510.         LDA CHANNL    
  3511.         BNE ICHKO_S2    ;$F31B
  3512.  
  3513. ICHKER7            
  3514.         JMP IOERMS7    ;$F790 dev0=kbd Verify
  3515.  
  3516. ICHKO_S2            
  3517.         CMP #$03    ;screen?
  3518.         BEQ ICHKO1    ;$F32E
  3519.         BCS ICHKO2    ;$F332 IEEE
  3520.  
  3521.         CMP #$02    ;RS232?
  3522.         BNE ICHKO_S3    ;$F328
  3523.         JMP SSUBBT    
  3524.  
  3525. ICHKO_S3            
  3526.         LDX SECADR    ;devs 0, 1
  3527.         CPX #$60    
  3528.         BEQ ICHKER7    ;$F318 tape verify
  3529.  
  3530. ICHKO1        ;screen    
  3531.         STA OUTDEV    
  3532.         CLC    
  3533.         RTS    
  3534.  
  3535. ICHKO2        ;IEEE    
  3536.         TAX    
  3537.         JSR ILISTN+1    
  3538.         LDA SECADR    
  3539.         BPL ICHKO_S4    ;$F33F
  3540.  
  3541.         JSR CLRATN    
  3542.         BNE ICHKO_S5    ;$F342
  3543.  
  3544. ICHKO_S4            
  3545.         JSR ISECND    
  3546.  
  3547. ICHKO_S5            
  3548.         TXA    
  3549.         BIT CSTAT    
  3550.         BPL ICHKO1    ;$F32E
  3551.  
  3552.         JMP IOERMS5    ;$F78A Loading
  3553.  
  3554.  
  3555. ;====================================================================            
  3556. ; ICLOSE - Close file (internal)            
  3557. ;            
  3558. ICLOSE            
  3559.         JSR FINDLOOP-2    ;$F3D4
  3560.         BEQ ICLSE    ;$F351
  3561.         CLC    
  3562.         RTS    
  3563.  
  3564. ICLSE            
  3565.         JSR FLATRB    
  3566.         TXA    
  3567.         PHA    
  3568.         LDA CHANNL    
  3569.         BEQ ICLSE4    ;$F3B1
  3570.  
  3571.         CMP #$03    ;screen
  3572.         BEQ ICLSE4    ;$F3B1
  3573.         BCS ICLSE3    ;$F3AE
  3574.  
  3575.         CMP #$02    ;RS232
  3576.         BNE ICLSE1    ;$F38D
  3577.  
  3578.         PLA    
  3579.         JSR ICLSE4+1    ;$F3B2
  3580.         LDA #%01111101    ;$7D
  3581.         STA D1IER    
  3582.         LDA #%00000110    ;$06
  3583.         STA D1ORB    
  3584.         LDA #%11101110    ;$EE
  3585.         STA D1PCR    
  3586.         JSR IMEMTP+2    ;$FE75
  3587.         LDA RIBUF+1    
  3588.         BEQ ICLSE_S1    ;$F37F
  3589.  
  3590.         INY    
  3591.  
  3592. ICLSE_S1            
  3593.         LDA ROBUF+1    
  3594.         BEQ ICLSE_S2    ;$F384
  3595.  
  3596.         INY    
  3597.  
  3598. ICLSE_S2            
  3599.         LDA #$00    
  3600.         STA RIBUF+1    
  3601.         STA ROBUF+1    
  3602.         JMP SEROPN4    ;$F53C
  3603.  
  3604. ICLSE1            
  3605.         LDA SECADR    
  3606.         AND #%00001111    ;$0F
  3607.         BEQ ICLSE4    ;$F3B1
  3608.  
  3609.         JSR GETBFA    ;$F84D
  3610.         LDA #$00    
  3611.         JSR OTIEEE1    ;$F290 skips channel check
  3612.         JMP TPWPCH    ;$E4CF
  3613.  
  3614. ICLSE2            
  3615.         BCS ICLSEEX    ;$F3CE
  3616.         LDA SECADR    
  3617.         CMP #$62    
  3618.         BNE ICLSE4    ;$F3B1
  3619.         LDA #$05    
  3620.         JSR WRTPHD    
  3621.         JMP ICLSE4    ;$F3B1
  3622.  
  3623. ICLSE3            
  3624.         JSR SERSAV1A    
  3625.  
  3626. ICLSE4            
  3627.         PLA    
  3628.         TAX    
  3629.         DEC COPNFL    
  3630.         CPX COPNFL    
  3631.         BEQ ICLSEEX-1    ;$F3CD return CY=0
  3632.         LDY COPNFL    
  3633.         LDA FILTBL,Y
  3634.         STA FILTBL,X
  3635.         LDA DEVTBL,Y
  3636.         STA DEVTBL,X
  3637.         LDA SECATB,Y
  3638.         STA SECATB,X
  3639.         CLC
  3640.  
  3641. ICLSEEX        
  3642.         RTS
  3643.  
  3644.  
  3645. ;====================================================================        
  3646. ; FIND - Find file        
  3647. ;        
  3648. FIND        
  3649.         LDA #$00
  3650.         STA CSTAT
  3651.         TXA
  3652.         LDX COPNFL
  3653.  
  3654. FINDLOOP            
  3655.         DEX    
  3656.         BMI FLATRBX    ;$F3EE
  3657.  
  3658.         CMP FILTBL,X
  3659.         BNE FINDLOOP    ;$F3D6
  3660.  
  3661.         RTS    
  3662.  
  3663. ;====================================================================            
  3664. ; FLATRB - Set file values            
  3665. ;            
  3666. FLATRB            
  3667.         LDA FILTBL,X
  3668.         STA LOGFIL    
  3669.         LDA DEVTBL,X
  3670.         STA CHANNL
  3671.         LDA SECATB,X
  3672.         STA SECADR
  3673.  
  3674. FLATRBX        
  3675.         RTS
  3676.  
  3677. ;====================================================================        
  3678. ; ICLALL - Abort all files (internal)        
  3679. ;        
  3680. ICLALL        
  3681.         LDA #$00
  3682.         STA COPNFL
  3683.  
  3684. ;====================================================================        
  3685. ; ICLRCH - Restore default I/O (internal)            
  3686. ;            
  3687. ICLRCH            
  3688.         LDX #$03    
  3689.         CPX OUTDEV    ;is output device <=3
  3690.         BCS ICLRCH_S1    ;$F3FC yes, continue 
  3691.              
  3692.         JSR IUNLSN    ;send unlisten command
  3693.  
  3694. ICLRCH_S1            
  3695.         CPX INDEV    ;is input device <=3
  3696.         BCS ICLRCH_S2    ;$F403 yes, continue
  3697.  
  3698.         JSR IUNTLK    ;send untalk
  3699.  
  3700. ICLRCH_S2            
  3701.         STX OUTDEV    
  3702.         LDA #$00    
  3703.         STA INDEV    
  3704.         RTS    
  3705.  
  3706.  
  3707. ;====================================================================            
  3708. ; IOPEN - Open file (internal)            
  3709. ;            
  3710. IOPEN            
  3711.         LDX LOGFIL    
  3712.         BNE IOPEN_S1    ;F411 <>0 not save
  3713.         JMP IOERMS6    ;$F78D saving
  3714.  
  3715. IOPEN_S1            
  3716.         JSR FIND    
  3717.         BNE IOPEN_S2    ;F419
  3718.         JMP IOERMS2    ;$F781 searching for
  3719.  
  3720. IOPEN_S2            
  3721.         LDX COPNFL    
  3722.         CPX #$0A    ;10 files open?
  3723.         BCC IOPEN_S3    ;F422
  3724.         JMP IOERMS1    ;I/O error
  3725.  
  3726. IOPEN_S3            
  3727.         INC COPNFL    
  3728.         LDA LOGFIL    
  3729.         STA FILTBL,X
  3730.         LDA SECADR    
  3731.         ORA #%01100000    ;$60
  3732.         STA SECADR    
  3733.         STA SECATB,X
  3734.         LDA CHANNL    
  3735.         STA DEVTBL,X
  3736.         BEQ IOPENRC    ;$F493 return clear
  3737.  
  3738.         CMP #$03    ;screen?
  3739.         BEQ IOPENRC    ;$F493
  3740.         BCC IOPEN_S4    ;F444
  3741.  
  3742.         JSR SENDSA    ;send secondary
  3743.         BCC IOPENRC    ;$F493 return clear
  3744.  
  3745. IOPEN_S4            
  3746.         CMP #$02    ;RS232?
  3747.         BNE IOPEN_S5    ;F44B not RS232
  3748.         JMP SEROPN    
  3749.  
  3750. IOPEN_S5            
  3751.         JSR GETBFA    ;not screen or RS232
  3752.         BCS IOPEN_S6    ;F453
  3753.         JMP IOERMS9    ;$F796 OK
  3754.  
  3755. IOPEN_S6            
  3756.         LDA SECADR    
  3757.         AND #%00001111    ;$0F
  3758.         BNE IOPEN2    ;$F478
  3759.  
  3760.         JSR PLAYMS    
  3761.         BCS IOPENRC+1    ;$F494 return CY=1
  3762.  
  3763.         JSR SRCHMS    ;searching
  3764.         LDA FNMLEN    
  3765.         BEQ IOPEN1    ;F46F    name found
  3766.  
  3767.         JSR LOCSPH        
  3768.         BCC IOPEN3    ;$F482    
  3769.         BEQ IOPENRC+1    ;$F494 return CY=1    
  3770.  
  3771. IOPENA                
  3772.         JMP IOERMS4    ;IOERMS4 F787    
  3773.  
  3774. IOPEN1                
  3775.         JSR LOCTPH        
  3776.         BEQ IOPENRC+1    ;$F494    
  3777.         BCC IOPEN3    ;$F482    
  3778.         BCS IOPENA    ;$F46C    
  3779.  
  3780. IOPEN2                
  3781.         JSR RECDMS    
  3782.         BCS IOPENRC+1    ;$F494 return CY=1
  3783.  
  3784.         LDA #$04    
  3785.         JSR WRTPHD    
  3786.  
  3787. IOPEN3            
  3788.         LDA #$BF    
  3789.         LDY SECADR    
  3790.         CPY #$60    
  3791.         BEQ IOPENRC-2    ;$F491
  3792.  
  3793.         LDY #$00    
  3794.         LDA #$02    
  3795.         STA (TAPE1),Y
  3796.         TYA    
  3797.         STA BUFPNT    
  3798.  
  3799. IOPENRC            
  3800.         CLC    
  3801.         RTS    
  3802.  
  3803.  
  3804. ;====================================================================            
  3805. ; SENDSA - Send secondary address            
  3806. ;            
  3807. SENDSA            
  3808.         LDA SECADR    
  3809.         BMI SNDSARC    ;$F4C5
  3810.  
  3811.         LDY FNMLEN    
  3812.         BEQ SNDSARC    ;$F4C5
  3813.  
  3814.         LDA CHANNL    
  3815.         JSR ILISTN+1    
  3816.         LDA SECADR    
  3817.         ORA #%11110000    ;$F0
  3818.         JSR ISECND    ;$EEC0
  3819.         LDA CSTAT    
  3820.         BPL SENDSA1    ;$F4B2
  3821.  
  3822.         PLA    
  3823.         PLA    
  3824.         JMP IOERMS5    ;$F78A
  3825.  
  3826. SENDSA1            
  3827.         LDA FNMLEN    
  3828.         BEQ SNDSARU    ;$F4C2
  3829.  
  3830.         LDY #$00    
  3831.  
  3832. SENDSALP            
  3833.         LDA (FNPTR),Y    ;send chrout to filename
  3834.         JSR ICIOUT    
  3835.         INY    
  3836.         CPY FNMLEN    
  3837.         BNE SENDSALP    ;$F4B8
  3838.  
  3839. SNDSARU            
  3840.         JSR IUNLSN    
  3841.  
  3842. SNDSARC            
  3843.         CLC    
  3844.         RTS    
  3845.  
  3846.  
  3847. ;====================================================================            
  3848. ; SEROPN - Open RS-232            
  3849. ;            
  3850. SEROPN            
  3851.         LDA #%00000110    ;$06
  3852.         STA D1DDRB    
  3853.         STA D1ORB    
  3854.         LDA #%11101110    ;$EE
  3855.         STA D1PCR    
  3856.         LDY #$00    
  3857.         STY RSSTAT    
  3858.  
  3859. SEROPLP            
  3860.         CPY FNMLEN    
  3861.         BEQ SEROPN1    ;$F4E7
  3862.  
  3863.         LDA (FNPTR),Y
  3864.         STA M51CTR,Y
  3865.         INY    
  3866.         CPY #$04    
  3867.         BNE SEROPLP    ;$F4D9
  3868.  
  3869. SEROPN1            
  3870.         JSR BITCNT    
  3871.         STX BITNUM    
  3872.         LDA M51CTR    
  3873.         AND #%00001111    ;$0F
  3874.         BNE $+2    ;F4F4
  3875.  
  3876.         ASL A    
  3877.         TAX    
  3878.         LDA R232TB-2,X    ;$FF5A,X
  3879.         ASL A    
  3880.         TAY    
  3881.         LDA R232TB-1,X    ;$FF5B,X
  3882.         ROL A    
  3883.         PHA    
  3884.         TYA    
  3885.         ADC #$C8    
  3886.         STA BAUDOF    
  3887.         PLA    
  3888.         ADC #$00    
  3889.         STA BAUDOF+1    
  3890.         LDA M51CDR    
  3891.         LSR A    
  3892.         BCC SEROPN2    ;$F51B
  3893.  
  3894.         LDA D2ORB    
  3895.         ASL A    
  3896.         BCS SEROPN2    ;$F51B
  3897.         JMP DSRERR    
  3898.  
  3899. SEROPN2            
  3900.         LDA RIDBE    
  3901.         STA RIDBS    
  3902.         LDA RODBE    
  3903.         STA RODBS    
  3904.         JSR IMEMTP+2    ;$FE75
  3905.  
  3906.         LDA RIBUF+1    
  3907.         BNE SEROPN3    ;$F533
  3908.  
  3909.         DEY    
  3910.         STY RIBUF+1    
  3911.         STX RIBUF    
  3912.  
  3913. SEROPN3            
  3914.         LDA ROBUF+1    
  3915.         BNE SEROPN4    ;$F53C
  3916.         DEY    
  3917.         STY ROBUF+1    
  3918.         STX ROBUF    
  3919.  
  3920. SEROPN4            
  3921.         SEC    
  3922.         LDA #$F0    
  3923.         JMP STOTOP    ;$FE7B
  3924.  
  3925.  
  3926. ;====================================================================            
  3927. ; ILOAD - Load RAM from device (internal)            
  3928. ;            
  3929. ILOAD            
  3930.         STX MEMUSS    ;save load location
  3931.         STY MEMUSS+1    
  3932.         JMP (LLODVP)    
  3933.  
  3934.  
  3935. ;====================================================================            
  3936. ; LNKLOD - Load RAM (indirect from $0330)            
  3937. ;            
  3938. LNKLOD            
  3939.         STA IOFLG2    
  3940.         LDA #$00    
  3941.         STA CSTAT    
  3942.         LDA CHANNL    
  3943.         BNE LINK_S1    ;$F556
  3944.  
  3945. LNKLDEX            
  3946.         JMP IOERMS9    ;$F796 OK
  3947.  
  3948. LINK_S1            
  3949.         CMP #$03    ;screen?
  3950.         BEQ LNKLDEX    ;$F553
  3951.         BCC TAPLOA    ;F5CA <3, must be tape
  3952. ;            
  3953. ; SERLOA - Load file from serial bus            
  3954. ;            
  3955. SERLOA            
  3956.         LDY FNMLEN    
  3957.         BNE SERLO_S1    ;F563
  3958.         JMP IOERMS8    ;$F793 found
  3959.  
  3960. SERLO_S1            
  3961.         JSR SSADR    ;$E4BC
  3962.         LDA #$60    
  3963.         STA SECADR    
  3964.         JSR SENDSA    
  3965.         LDA CHANNL    
  3966.         JSR ITALK    
  3967.         LDA SECADR    
  3968.         JSR ITKSA    
  3969.         JSR IACPTR    
  3970.         STA EAL    
  3971.         LDA CSTAT    
  3972.         LSR A    
  3973.         LSR A    
  3974.         BCS SERLDEX    ;$F5C7
  3975.  
  3976.         JSR IACPTR    
  3977.         STA EAL+1    
  3978.         JSR SLDPCH    ;$E4C1
  3979.  
  3980. SERLDLP            
  3981.         LDA #$FD    
  3982.         AND CSTAT    
  3983.         STA CSTAT    
  3984.         JSR STOP    
  3985.         BNE SERLO_S2    ;F598
  3986.         JMP SAVEXIT1    ;$F6CE
  3987.  
  3988. SERLO_S2            
  3989.         JSR IACPTR    
  3990.         TAX    
  3991.         LDA CSTAT    
  3992.         LSR A    
  3993.         LSR A    
  3994.         BCS SERLDLP    ;$F58A
  3995.  
  3996.         TXA    
  3997.         LDY IOFLG2    
  3998.         BEQ SERLD1    ;$F5B3
  3999.  
  4000.         LDY #$00    
  4001.         CMP (EAL),Y
  4002.         BEQ SERLD2    ;$F5B5
  4003.  
  4004.         LDA #$10    
  4005.         JSR ISETMS1    ;$FE6A
  4006.         .db $2C    ;bit $ae91
  4007.  
  4008. SERLD1            
  4009.         STA (EAL),Y
  4010.  
  4011. SERLD2            
  4012.         INC EAL    
  4013.         BNE SERLO_S3    ;$F5BB
  4014.  
  4015.         INC EAL+1    
  4016.  
  4017. SERLO_S3            
  4018.         BIT CSTAT    
  4019.         BVC SERLDLP    ;$F58A
  4020.  
  4021.         JSR IUNTLK    
  4022.         JSR SERSAV1A    
  4023.         BCC TPLOAEX    ;$F641
  4024.  
  4025. SERLDEX            
  4026.         JMP IOERMS4    ;$F787 play & rec
  4027.  
  4028.  
  4029. ;====================================================================            
  4030. ; TAPLOA - Load file from tape            
  4031. ;            
  4032. TAPLOA            
  4033.         CMP #$02    
  4034.         BNE TPLOA_S1    ;F5D1
  4035.         JMP SSUBBT-3    ;IOERMS9
  4036.  
  4037. TPLOA_S1            
  4038.         JSR GETBFA    
  4039.         BCS TPLOA_S2    ;F5D9
  4040.         JMP IOERMS9    ;$F796
  4041.  
  4042. TPLOA_S2            
  4043.         JSR PLAYMS    
  4044.         BCS TPLORTS    
  4045.  
  4046.         JSR SRCHMS    
  4047.  
  4048. TAPLOALP            
  4049.         LDA FNMLEN    
  4050.         BEQ TAPLOA1    ;$F5EE
  4051.  
  4052.         JSR LOCSPH    
  4053.         BCC TAPLOA2    ;$F5F5
  4054.         BEQ TPLORTS    
  4055.         BCS SERLDEX    ;$F5C7
  4056.  
  4057. TAPLOA1            
  4058.         JSR LOCTPH    
  4059.         BEQ TPLORTS    
  4060.         BCS SERLDEX    ;$F5C7
  4061.  
  4062. TAPLOA2            
  4063.         LDA CSTAT    
  4064.         AND #%00010000    ;$10
  4065.         SEC    
  4066.         BNE TPLORTS    
  4067.  
  4068.         CPX #$01    
  4069.         BEQ TAPLOA3    ;$F611
  4070.  
  4071.         CPX #$03    
  4072.  
  4073. TAPLOA2A            
  4074.         BNE TAPLOALP    ;$F5E1
  4075.              
  4076. TAPLOALP2            
  4077.         LDY #$01    
  4078.         LDA (TAPE1),Y
  4079.         STA MEMUSS    
  4080.         INY    
  4081.         LDA (TAPE1),Y
  4082.         STA MEMUSS+1    
  4083.         BCS TAPLOA4    ;$F615
  4084.  
  4085. TAPLOA3            
  4086.         LDA SECADR    
  4087.         BNE TAPLOALP2    ;F604
  4088.  
  4089. TAPLOA4            
  4090.         LDY #$03    
  4091.         LDA (TAPE1),Y
  4092.         LDY #$01    
  4093.         SBC (TAPE1),Y
  4094.         TAX    
  4095.         LDY #$04    
  4096.         LDA (TAPE1),Y
  4097.         LDY #$02    
  4098.         SBC (TAPE1),Y
  4099.         TAY    
  4100.         CLC    
  4101.         TXA    
  4102.         ADC MEMUSS    
  4103.         STA EAL    
  4104.         TYA    
  4105.         ADC MEMUSS+1    
  4106.         STA EAL+1    
  4107.         LDA MEMUSS    
  4108.         STA STAL    
  4109.         LDA MEMUSS+1    
  4110.         STA STAL+1    
  4111.         JSR LOADMS    
  4112.         JSR TPREAD2    ;$F8C9
  4113.         .db $24    ;BIT LASTPT+1
  4114.  
  4115. TPLOAEX            
  4116.         CLC    
  4117.         LDX EAL    
  4118.         LDY EAL+1    
  4119.  
  4120. TPLORTS            
  4121.         RTS    
  4122.  
  4123.  
  4124. ;====================================================================            
  4125. ; SRCHMS - Print Searching            
  4126. ;            
  4127. SRCHMS            
  4128.         LDA CMDMOD    
  4129.         BPL SRCHEX    ;$F669
  4130.  
  4131.  
  4132.         LDY #KIM_SRCH    ;Searching for
  4133.         JSR MSG    
  4134.         LDA FNMLEN    
  4135.         BEQ SRCHEX    ;$F669
  4136.         LDY #$17    ;point to FOR in Searching For
  4137.         JSR MSG    
  4138. ;            
  4139. ; FLNMMS - Print filename            
  4140. ;            
  4141. FLNMMS            
  4142.         LDY FNMLEN    
  4143.         BEQ SRCHEX    ;$F669
  4144.         LDY #$00    
  4145.  
  4146. FLNMLP            
  4147.         LDA (FNPTR),Y
  4148.         JSR CHROUT    
  4149.         INY    
  4150.         CPY FNMLEN    
  4151.         BNE FLNMLP    ;$F65F
  4152.  
  4153. SRCHEX            
  4154.         RTS    
  4155.  
  4156.  
  4157. ;====================================================================            
  4158. ; LOADMS - Print Loading or Verifying            
  4159. ;            
  4160. LOADMS            
  4161.         LDY #KIM_LOAD    ;Loading
  4162.         LDA IOFLG2    
  4163.         BEQ DOMESG    ;$F672
  4164.  
  4165.         LDY #KIM_VERF    ;Verifying
  4166.  
  4167. DOMESG            
  4168.         JMP DIRMSG    
  4169.  
  4170.  
  4171. ;====================================================================            
  4172. ; ISAVE - Save RAM to device            
  4173. ;            
  4174. ISAVE            
  4175.         STX EAL    
  4176.         STY EAL+1    
  4177.         TAX    
  4178.         LDA USRPOK,X
  4179.         STA STAL    
  4180.         LDA USRVEC,X    
  4181.         STA STAL+1    
  4182.         JMP (LSAVVP)    
  4183.  
  4184.  
  4185. ;====================================================================            
  4186. ; LNKSAV - Link to SAVE (indirect from $0302)            
  4187. ;            
  4188. LNKSAV            
  4189.         LDA CHANNL    ;Get current device
  4190.         BNE LNKSV_S2    ;F68C Not 0, continue
  4191.  
  4192. LNKSV_S1            
  4193.         JMP IOERMS9    ;$F796 OK 
  4194.  
  4195. LNKSV_S2            
  4196.         CMP #$03    ;Device 3 (printer 3-5)
  4197.         BEQ LNKSV_S1    ;$F689
  4198.         BCC TAPESV    
  4199. ;            
  4200. ; SERSAV - Save to serial bus            
  4201. ;            
  4202. SERSAV            
  4203.         LDA #$61    
  4204.         STA SECADR    
  4205.         LDY FNMLEN    
  4206.         BNE SERSAV_S1    ;$F69D
  4207.         JMP IOERMS8    ;$F793 found
  4208.  
  4209. SERSAV_S1            
  4210.         JSR SENDSA    
  4211.         JSR SAVEMS    
  4212.         LDA CHANNL    
  4213.         JSR ILISTN+1    
  4214.         LDA SECADR    
  4215.         JSR ISECND    
  4216.         LDY #$00    
  4217.         JSR RSTTPP    
  4218.         LDA SAL    
  4219.         JSR ICIOUT    
  4220.         LDA SAL+1    
  4221.         JSR ICIOUT    
  4222.  
  4223. SERSAVLP            
  4224.         JSR CKWRPT    
  4225.         BCS SERSAV1    ;$F6D7
  4226.  
  4227.         LDA (SAL),Y
  4228.         JSR ICIOUT    
  4229.         JSR STOP    
  4230.         BNE SAVEXIT2    
  4231.  
  4232. SAVEXIT1            
  4233.         JSR SERSAV1A    ;$F6DA
  4234.  
  4235. SAVEXIT            
  4236.         LDA #$00    
  4237.         SEC    
  4238.         RTS    
  4239.  
  4240. SAVEXIT2
  4241.         JSR INCRDP    ;$FD1B
  4242.         BNE SERSAVLP    ;$F6BC
  4243.  
  4244. SERSAV1            
  4245.         JSR IUNLSN    
  4246.  
  4247. SERSAV1A            
  4248.         BIT SECADR    
  4249.         BMI SERSAVRC    ;$F6EF
  4250.  
  4251.         LDA CHANNL    
  4252.         JSR ILISTN+1    
  4253.         LDA SECADR    
  4254.         AND #%11101111    ;$EF
  4255.         ORA #%11100000    ;$E0
  4256.         JSR ISECND    
  4257.         JSR IUNLSN    
  4258.  
  4259. SERSAVRC            
  4260.         CLC    
  4261.         RTS    
  4262.  
  4263.  
  4264. ;====================================================================            
  4265. ; TAPESV - Save to tape            
  4266. ;            
  4267. TAPESV            
  4268.         CMP #$02    
  4269.         BNE TPSAV_S1    ;$F6F8
  4270.         JMP SSUBBT-3    ;IOERMS9 
  4271.  
  4272. TPSAV_S1            
  4273.         JSR GETBFA    
  4274.         BCC LNKSAV+4    ;LNKSAV+4 $F689 JMP IOERMS9
  4275.  
  4276.         JSR RECDMS    
  4277.         BCS TPSVRET    ;$F727 RTS
  4278.  
  4279.         JSR SAVEMS    ;print saving message
  4280.         LDX #$03    
  4281.         LDA SECADR    
  4282.         AND #%00000001    ;$01
  4283.         BNE TPSAV_S2    ;$F70F
  4284.  
  4285.         LDX #$01    
  4286.  
  4287. TPSAV_S2            
  4288.         TXA    
  4289.         JSR WRTPHD    
  4290.         BCS TPSVRET    ;$F727
  4291.  
  4292.         JSR TPWRIT+3    ;$F8E6
  4293.         BCS TPSVRET    ;$F727
  4294.  
  4295.         LDA SECADR    
  4296.         AND #%00000010    ;$02
  4297.         BEQ TPSVRET-1    ;$F726 exit with CLC
  4298.  
  4299.         LDA #$05    
  4300.         JSR WRTPHD    
  4301.         .db $24    ; BIT $18
  4302.         CLC    
  4303.  
  4304. TPSVRET            
  4305.         RTS    
  4306.  
  4307.  
  4308. ;====================================================================            
  4309. ; SAVEMS - Print Saving            
  4310. ;            
  4311. SAVEMS            
  4312.         LDA CMDMOD    
  4313.         BPL TPSVRET    ;$F727
  4314.  
  4315.         LDY #KIM_SAVE    ;'Saving
  4316.         JSR MSG    
  4317.         JMP FLNMMS    ;print filename
  4318.  
  4319.  
  4320. ;====================================================================            
  4321. ; IUDTIM - Update RTC (internal)            
  4322. ;            
  4323. IUDTIM            
  4324.         LDX #$00    
  4325.         INC CTIMR2    
  4326.         BNE UDTIM1    ;$F740
  4327.  
  4328.         INC CTIMR1    
  4329.         BNE UDTIM1    ;$F740
  4330.  
  4331.         INC CTIMR0    
  4332.  
  4333. UDTIM1            
  4334.         SEC    
  4335.         LDA CTIMR2    
  4336.         SBC #$01    
  4337.         LDA CTIMR1    
  4338.         SBC #$1A    
  4339.         LDA CTIMR0    
  4340.         SBC #$4F    
  4341.         BCC UDTIM2    ;$F755
  4342.  
  4343.         STX CTIMR0    
  4344.         STX CTIMR1    
  4345.         STX CTIMR2    
  4346.  
  4347. UDTIM2            
  4348.         LDA D2ORAH    
  4349.         CMP D2ORAH    
  4350.         BNE UDTIM2    ;$F755
  4351.  
  4352.         STA STKEY    
  4353.         RTS    
  4354.  
  4355.  
  4356. ;====================================================================        
  4357. ; IRDTIM - Read RTC (internal)        
  4358. ;        
  4359. IRDTIM        
  4360.         SEI
  4361.         LDA CTIMR2
  4362.         LDX CTIMR1
  4363.         LDY CTIMR0
  4364.  
  4365.  
  4366. ;====================================================================        
  4367. ; ISETTM - Set RTC (internal)        
  4368. ;        
  4369. ISETTM        
  4370.         SEI 
  4371.         STA CTIMR2
  4372.         STX CTIMR1    
  4373.         STY CTIMR0    
  4374.         CLI    
  4375.         RTS    
  4376.  
  4377.  
  4378. ;====================================================================            
  4379. ; ISTOP - Check STOP key            
  4380. ;            
  4381. ISTOP            
  4382.         LDA STKEY    
  4383.         CMP #%11111110    ;$FE
  4384.         BNE ISTOPEX    ;$F77D
  4385.  
  4386.         PHP    
  4387.         JSR CLRCH    
  4388.         STA KEYCNT    
  4389.         PLP    
  4390.  
  4391. ISTOPEX            
  4392.         RTS    
  4393.  
  4394.  
  4395. ;====================================================================            
  4396. ;IOERMS - I/O Error Message Table register load            
  4397. ;         All use the BIT $xxA9 trick to skip unused entries            
  4398. ;            
  4399. IOERMS1            
  4400.         LDA #$01    ;I/O Error
  4401.         .db $2C    
  4402.  
  4403. IOERMS2            
  4404.         LDA #$02    ;Searching for
  4405.         .db $2C     
  4406.  
  4407. IOERMS3            
  4408.         LDA #$03    ;Press Play on Tape
  4409.         .db $2C     
  4410.  
  4411. IOERMS4            
  4412.         LDA #$04    ;Press Record & Play on Tape
  4413.         .db $2C     
  4414.  
  4415. IOERMS5            
  4416.         LDA #$05    ;Loading
  4417.         .db $2C     
  4418.  
  4419. IOERMS6            
  4420.         LDA #$06    ;Saving
  4421.         .db $2C     
  4422.  
  4423. IOERMS7            
  4424.         LDA #$07    ;Verifying
  4425.         .db $2C     
  4426.  
  4427. IOERMS8            
  4428.         LDA #$08    ;Found
  4429.         .db $2C     
  4430.  
  4431. IOERMS9            
  4432.         LDA #$09    ;OK
  4433.  
  4434.         PHA    
  4435.         JSR CLRCH    
  4436.         LDY #$00    
  4437.         BIT CMDMOD    
  4438.         BVC IOERMSEX    ;$F7AC
  4439.  
  4440.         JSR MSG    ;Error 0-I/O Error
  4441.         PLA    
  4442.         PHA    
  4443.         ORA #%00110000    ;$30
  4444.         JSR CHROUT    
  4445.  
  4446. IOERMSEX            
  4447.         PLA    
  4448.         SEC    
  4449.         RTS    
  4450.  
  4451.  
  4452. ;====================================================================            
  4453. ; LOCTPH - Find any tape header            
  4454. ;            
  4455. LOCTPH            
  4456.         LDA IOFLG2    
  4457.         PHA    
  4458.         JSR TPREAD    
  4459.         PLA    
  4460.         STA IOFLG2    
  4461.         BCS LOCTPEX    ;F7E6
  4462.  
  4463.         LDY #$00    
  4464.         LDA (TAPE1),Y
  4465.         CMP #$05    
  4466.         BEQ LOCTPEX    ;$F7E6
  4467.  
  4468.         CMP #$01    
  4469.         BEQ LOCTP1    ;$F7CE
  4470.  
  4471.         CMP #$03    
  4472.         BEQ LOCTP1    ;$F7CE
  4473.  
  4474.         CMP #$04    
  4475.         BNE LOCTPH    
  4476.  
  4477. LOCTP1            
  4478.         TAX    
  4479.         BIT CMDMOD    
  4480.         BPL LOCTPEX-2    ;$F7E4 return CLC
  4481.  
  4482.         LDY #KIM_FOUN    ;Found
  4483.         JSR MSG    
  4484.         LDY #$05    
  4485.  
  4486. LOCLOOP            
  4487.         LDA (TAPE1),Y
  4488.         JSR CHROUT    
  4489.         INY    
  4490.         CPY #$15    
  4491.         BNE LOCLOOP    ;$F7DA
  4492.         CLC    
  4493.         DEY    
  4494.  
  4495. LOCTPEX            
  4496.         RTS    
  4497.  
  4498.  
  4499. ;====================================================================            
  4500. ; WRTPHD - Write tape header            
  4501. ;            
  4502. WRTPHD            
  4503.         STA TPTR1    
  4504.         JSR GETBFA    
  4505.         BCC WRTPEX    ;$F84C
  4506.  
  4507.         LDA STAL+1    
  4508.         PHA    
  4509.         LDA STAL    
  4510.         PHA    
  4511.         LDA EAL+1    
  4512.         PHA    
  4513.         LDA EAL    
  4514.         PHA    
  4515.         LDY #$BF    
  4516.         LDA #$20    
  4517.  
  4518. WRTPLP1            
  4519.         STA (TAPE1),Y
  4520.         DEY    
  4521.         BNE WRTPLP1    ;$F7FE
  4522.  
  4523.         LDA TPTR1    
  4524.         STA (TAPE1),Y
  4525.         INY    
  4526.         LDA STAL    
  4527.         STA (TAPE1),Y
  4528.         INY    
  4529.         LDA STAL+1    
  4530.         STA (TAPE1),Y
  4531.         INY    
  4532.         LDA EAL    
  4533.         STA (TAPE1),Y
  4534.         INY    
  4535.         LDA EAL+1    
  4536.         STA (TAPE1),Y
  4537.         INY    
  4538.         STY TPTR2    
  4539.         LDY #$00    
  4540.         STY TPTR1    
  4541.  
  4542. WRTPLP2            
  4543.         LDY TPTR1    
  4544.         CPY FNMLEN    
  4545.         BEQ WRTPH1    ;$F834
  4546.  
  4547.         LDA (FNPTR),Y
  4548.         LDY TPTR2    
  4549.         STA (TAPE1),Y
  4550.         INC TPTR1    
  4551.         INC TPTR2    
  4552.         BNE WRTPLP2    ;$F822
  4553.  
  4554. WRTPH1            
  4555.         JSR SETBST    
  4556.         LDA #$69    
  4557.         STA RIPRTY    
  4558.         JSR TPWRIT1    $F8EA
  4559.         TAY    
  4560.         PLA    
  4561.         STA EAL    
  4562.         PLA    
  4563.         STA EAL+1    
  4564.         PLA
  4565.         STA STAL
  4566.         PLA
  4567.         STA STAL+1
  4568.         TYA
  4569.  
  4570. WRTPEX        
  4571.         RTS
  4572.  
  4573.  
  4574. ;====================================================================        
  4575. ; GETBFA - Get buffer address        
  4576. ;        
  4577. GETBFA        
  4578.         LDX TAPE1
  4579.         LDY TAPE1+1
  4580.         CPY #$02
  4581.         RTS
  4582.  
  4583.  
  4584. ;====================================================================        
  4585. ; SETBST - Set buffer start/end pointers        
  4586. ;        
  4587. SETBST        
  4588.         JSR GETBFA
  4589.         TXA
  4590.         STA STAL
  4591.         CLC
  4592.         ADC #$C0
  4593.         STA EAL
  4594.         TYA
  4595.         STA STAL+1
  4596.         ADC #$00    
  4597.         STA EAL+1    
  4598.         RTS    
  4599.  
  4600.  
  4601. ;====================================================================            
  4602. ; LOCSPH- Find specific tape header            
  4603. ;            
  4604. LOCSPH            
  4605.         JSR LOCTPH    
  4606.         BCS LCSPEXC+1    ;$F889 return
  4607.  
  4608.         LDY #$05    
  4609.         STY TPTR2    
  4610.         LDY #$00    
  4611.         STY TPTR1    
  4612.  
  4613. LCSPHLP            
  4614.         CPY FNMLEN    
  4615.         BEQ LCSPEXC    ;$F888 return CLC
  4616.  
  4617.         LDA (FNPTR),Y
  4618.         LDY TPTR2    
  4619.         CMP (TAPE1),Y
  4620.         BNE LOCSPH    ;f867
  4621.  
  4622.         INC TPTR1    
  4623.         INC TPTR2    
  4624.         LDY TPTR1    
  4625.         BNE LCSPHLP    ;$F874
  4626.  
  4627. LCSPEXC            
  4628.         CLC
  4629.         RTS
  4630.  
  4631.  
  4632. ;====================================================================        
  4633. ; INCTPT - Bump tape pointer        
  4634. ;        
  4635. INCTPT        
  4636.         JSR GETBFA
  4637.         INC BUFPNT
  4638.         LDY BUFPNT
  4639.         CPY #$C0
  4640.         RTS
  4641.  
  4642.  
  4643. ;====================================================================        
  4644. ; PLAYMS - Print Press Play on Tape            
  4645. ;            
  4646. PLAYMS            
  4647.         JSR TPSTAT    
  4648.         BEQ TPSTEX    ;$F8B5 exit
  4649.  
  4650.         LDY #KIM_PLAY    ;Press Play...
  4651.         JSR MSG    
  4652.  
  4653. WTPLAY            
  4654.         JSR TPSTOP    
  4655.         JSR TPSTAT    
  4656.         BNE WTPLAY    ;$F89E wait for PLAY switch
  4657.  
  4658.         LDY #KIM_OK    ;OK
  4659.         JMP MSG    
  4660.  
  4661.  
  4662. ;====================================================================            
  4663. ; TPSTAT - Check tape status            
  4664. ;            
  4665. TPSTAT            
  4666.         LDA #%01000000    ;$40
  4667.         BIT D1ORAH    ;switch sense
  4668.         BNE TPSTEX    ;$F8B5
  4669.         BIT D1ORAH    
  4670.  
  4671. TPSTEX            
  4672.         CLC    
  4673.         RTS    
  4674.  
  4675.  
  4676. ;====================================================================            
  4677. ; RECDMS - Print Press Record on Tape            
  4678. ;            
  4679. RECDMS            
  4680.         JSR TPSTAT    
  4681.         BEQ TPSTEX    ;$F8B5
  4682.  
  4683.         LDY #KIM_RECP    ;Press Play & Record
  4684.         BNE WTPLAY-3    ;$F89B JSR MSG
  4685.  
  4686.  
  4687. ;====================================================================            
  4688. ; TPREAD - Initiate tape read            
  4689. ;            
  4690. TPREAD            
  4691.         LDA #$00    
  4692.         STA CSTAT    
  4693.         STA IOFLG2    
  4694.  
  4695. TPREAD1            
  4696.         JSR SETBST    
  4697.  
  4698. TPREAD2            
  4699.         JSR PLAYMS    
  4700.         BCS TPCODE-2    ;$F8ED
  4701.  
  4702.         SEI    
  4703.         LDA #$00    
  4704.         STA RIDATA    
  4705.         STA BITTS    
  4706.         STA TPCON1    
  4707.         STA TPTR1    
  4708.         STA TPTR2    
  4709.         STA BYTINF    
  4710.         LDA #$82    
  4711.         LDX #$0E    
  4712.         BNE TPCODE1    ;$F8F4
  4713.  
  4714. ;====================================================================            
  4715. ; TPWRIT - Initiate tape write            
  4716. ;            
  4717. TPWRIT            
  4718.         JSR SETBST    
  4719.         LDA #$14    
  4720.         STA RIPRTY    
  4721.  
  4722. TPWRIT1            
  4723.         JSR RECDMS    
  4724.         BCS TPSTPX1    ;$F957
  4725. ;            
  4726. ; TPCODE - Common tape code            
  4727. ;            
  4728. TPCODE            
  4729.         SEI    
  4730.         LDA #%10100000    ;$A0
  4731.         LDX #%00001000    ;$08
  4732.  
  4733. TPCODE1            
  4734.         LDY #%01111111    ;$7F
  4735.         STY D2IER    
  4736.         STA D2IER    
  4737.         JSR SBIDLE    
  4738.         LDA IRQVP    ;save current IRQ Vector
  4739.         STA TAPIRQ    
  4740.         LDA IRQVP+1    
  4741.         STA TAPIRQ+1    
  4742.         JSR STOIRQ1    ;$FCFB .X=8 set tape IRQ vectors
  4743.         LDA #$02    
  4744.         STA FSBLK    
  4745.         JSR NCHAR    
  4746.         LDA D1PCR    
  4747.         AND #%11111101    ;$FD
  4748.         ORA #%00001100    ;$0C
  4749.         STA D1PCR    
  4750.         STA CAS1    
  4751.         LDX #$FF    ;setup loop
  4752.         LDY #$FF    
  4753.  
  4754. TPCDLP1            
  4755.         DEY    
  4756.         BNE TPCDLP1    ;$F925
  4757.  
  4758.         DEX    
  4759.         BNE TPCDLP1-2    ;$F923 outside loop
  4760.         STA D2TM2H    
  4761.         CLI    
  4762.  
  4763. TPCDLP2            
  4764.         LDA TAPIRQ+1    
  4765.         CMP IRQVP+1    
  4766.         CLC    
  4767.         BEQ TPSTPX1    ;$F957
  4768.  
  4769.         JSR TPSTOP    
  4770.         LDA D2IFR    
  4771.         AND #%01000000    ;$40
  4772.         BEQ TPCDLP2    ;$F92F
  4773.  
  4774.         LDA D1TM1L    
  4775.         JSR IUDTIM    
  4776.         JMP TPCDLP2    ;$F92F
  4777.  
  4778.  
  4779. ;====================================================================            
  4780. ; TPSTOP - Check tape stop            
  4781. ;            
  4782. TPSTOP            
  4783.         JSR STOP    
  4784.         CLC    
  4785.         BNE TPSTPX    ;$F95C
  4786.  
  4787.         JSR RESIRQ    
  4788.         SEC
  4789.         PLA
  4790.         PLA
  4791.  
  4792. TPSTPX1        
  4793.         LDA #$00
  4794.         STA TAPIRQ+1
  4795.  
  4796. TPSTPX        
  4797.         RTS
  4798.  
  4799.  
  4800. ;====================================================================        
  4801. ; SETRDT - Set read timing        
  4802. ;        
  4803. SETRDT        
  4804.         STX TPCON2    
  4805.         LDA TPCON1    
  4806.         ASL A    
  4807.         ASL A    
  4808.         CLC    
  4809.         ADC TPCON1    
  4810.         CLC    
  4811.         ADC TPCON2    
  4812.         STA TPCON2    
  4813.         LDA #$00    
  4814.         BIT TPCON1    
  4815.         BMI SETRD_S1    ;$F972
  4816.  
  4817.         ROL A    
  4818.  
  4819. SETRD_S1            
  4820.         ASL TPCON2    
  4821.         ROL A    
  4822.         ASL TPCON2    
  4823.         ROL A    
  4824.         TAX    
  4825.  
  4826. RDTLP1            
  4827.         LDA D2TM2L    
  4828.         CMP #$15    
  4829.         BCC RDTLP1    ;$F979
  4830.  
  4831.         ADC TPCON2    
  4832.         STA D2TM1L    
  4833.         TXA    
  4834.         ADC D2TM2H    
  4835.         STA D2TM1L+1    
  4836.         CLI
  4837.         RTS
  4838.  
  4839.  
  4840. ;====================================================================        
  4841. ; RDTPBT - Read tape bits        
  4842. ;        
  4843. RDTPBT        
  4844.         LDX D2TM2H
  4845.         LDY #$FF
  4846.         TYA
  4847.         SBC D2TM2L
  4848.         CPX D2TM2H
  4849.         BNE RDTPBT
  4850.  
  4851.         STX TPCON2
  4852.         TAX    
  4853.         STY D2TM2L    
  4854.         STY D2TM2H    
  4855.         TYA    
  4856.         SBC TPCON2    
  4857.         STX TPCON2    
  4858.         LSR A    
  4859.         ROR TPCON2    
  4860.         LSR A    
  4861.         ROR TPCON2    
  4862.         LDA TPCON1    
  4863.         CLC    
  4864.         ADC #$3C    
  4865.         BIT D2ORA    
  4866.         CMP TPCON2    
  4867.         BCS RDTP4    ;$FA06
  4868.  
  4869.         LDX BYTINF    
  4870.         BEQ RDTPB_S1    ;F9C3
  4871.         JMP STORTC    ;save tape IRQs
  4872.  
  4873. RDTPB_S1            
  4874.         LDX SBITCF    
  4875.         BMI RDTP1    ;$F9E2
  4876.  
  4877.         LDX #$00    
  4878.         ADC #$30    
  4879.         ADC TPCON1    
  4880.         CMP TPCON2    
  4881.         BCS RDTP2    ;$F9ED
  4882.  
  4883.         INX    
  4884.         ADC #$26    
  4885.         ADC TPCON1    
  4886.         CMP TPCON2    
  4887.         BCS RDTP3    ;$F9F1
  4888.  
  4889.         ADC #$2C    
  4890.         ADC TPCON1    
  4891.         CMP TPCON2    
  4892.         BCC RDTPLP1    ;$F9E5
  4893.  
  4894. RDTP1            
  4895.         JMP RDTP6A    ;$FA60
  4896.  
  4897. RDTPLP1            
  4898.         LDA BITTS    
  4899.         BEQ RDTP4    ;$FA06
  4900.  
  4901.         STA BITCI    
  4902.         BNE RDTP4    ;$FA06
  4903.  
  4904. RDTP2            
  4905.         INC RINONE    
  4906.         BCS RDTP3A    ;$F9F3
  4907.  
  4908. RDTP3            
  4909.         DEC RINONE    
  4910.  
  4911. RDTP3A            
  4912.         SEC    
  4913.         SBC #$13    
  4914.         SBC TPCON2    
  4915.         ADC SVXT    
  4916.         STA SVXT    
  4917.         LDA CYCLE    
  4918.         EOR #$01    
  4919.         STA CYCLE    
  4920.         BEQ RDTP3C    ;$FA25
  4921.  
  4922.         STX LASTKY    
  4923.  
  4924. RDTP4            
  4925.         LDA BITTS    
  4926.         BEQ RDTPEX1    ;$FA22
  4927.  
  4928.         BIT D2IFR    
  4929.         BVC RDTPEX1    ;$FA22
  4930.  
  4931.         LDA #$00    
  4932.         STA CYCLE    
  4933.         LDA SBITCF    
  4934.         BPL RDTP6    ;$FA47
  4935.         BMI RDTP1    ;$F9E2
  4936.  
  4937. RDTP3B            
  4938.         LDX #$A6    
  4939.         JSR SETRDT    
  4940.         LDA TPRTY    
  4941.         BNE RDTPLP1    ;$F9E5
  4942.  
  4943. RDTPEX1            
  4944.         JMP EOI    
  4945.  
  4946. RDTP3C            
  4947.         LDA SVXT    
  4948.         BEQ RDTP5A    ;$FA30
  4949.         BMI RDTP5    ;$FA2E
  4950.  
  4951.         DEC TPCON1    
  4952.         .db $2C    ;bit $b0e6
  4953.  
  4954. RDTP5            
  4955.         INC TPCON1    
  4956.  
  4957. RDTP5A            
  4958.         LDA #$00    
  4959.         STA SVXT    
  4960.         CPX LASTKY    
  4961.         BNE RDTP6    ;$FA47
  4962.  
  4963.         TXA    
  4964.         BNE RDTPLP1    ;$F9E5
  4965.  
  4966.         LDA RINONE    
  4967.         BMI RDTP4    ;$FA06
  4968.  
  4969.         CMP #$10    
  4970.         BCC RDTP4    ;$FA06
  4971.  
  4972.         STA EOTFLG    
  4973.         BCS RDTP4    ;$FA06
  4974.  
  4975. RDTP6            
  4976.         TXA    
  4977.         EOR TPRTY    
  4978.         STA TPRTY    
  4979.         LDA BITTS    
  4980.         BEQ RDTPEX1    ;$FA22
  4981.  
  4982.         DEC SBITCF    
  4983.         BMI RDTP3B    ;$FA19
  4984.  
  4985.         LSR LASTKY    
  4986.         ROR MYCH    
  4987.         LDX #$DA    
  4988.         JSR SETRDT    
  4989.         JMP EOI    
  4990.  
  4991. RDTP6A            
  4992.         LDA EOTFLG    
  4993.         BEQ RDTP7    ;$FA68
  4994.  
  4995.         LDA BITTS    
  4996.         BEQ RDTP8    ;$FA6C
  4997.  
  4998. RDTP7            
  4999.         LDA SBITCF    
  5000.         BPL RDTP3    ;$F9F1
  5001.  
  5002. RDTP8            
  5003.         LSR TPCON2    
  5004.         LDA #$93    
  5005.         SEC    
  5006.         SBC TPCON2    
  5007.         ADC TPCON1    
  5008.         ASL A    
  5009.         TAX    
  5010.         JSR SETRDT    
  5011.         INC BYTINF    
  5012.         LDA BITTS    
  5013.         BNE RDTP9    ;$FA91
  5014.  
  5015.         LDA EOTFLG    
  5016.         BEQ RDTPEX2    ;$FAAA
  5017.  
  5018.         STA BITCI    
  5019.         LDA #$00    
  5020.         STA EOTFLG    
  5021.         LDA #%11000000    ;$C0
  5022.         STA D2IER    
  5023.         STA BITTS    
  5024.  
  5025. RDTP9            
  5026.         LDA EOTFLG    
  5027.         STA NXTBIT    
  5028.         BEQ RDTP10    ;$FAA0
  5029.  
  5030.         LDA #$00    
  5031.         STA BITTS    
  5032.         LDA #%01000000    ;$40
  5033.         STA D2IER    
  5034.  
  5035. RDTP10            
  5036.         LDA MYCH    
  5037.         STA ROPRTY    
  5038.         LDA BITCI    
  5039.         ORA RINONE    
  5040.         STA RODATA    
  5041.  
  5042. RDTPEX2            
  5043.         JMP EOI    
  5044.  
  5045.  
  5046. ;====================================================================            
  5047. ; STORTC - Store tape characters            
  5048. ;            
  5049. STORTC            
  5050.         JSR NCHAR    
  5051.         STA BYTINF    
  5052.         LDX #$DA    
  5053.         JSR SETRDT    
  5054.         LDA FSBLK    
  5055.         BEQ STOTC_S1    ;FABD
  5056.  
  5057.         STA INBIT    
  5058.  
  5059. STOTC_S1            
  5060.         LDA #$0F    
  5061.         BIT RIDATA    
  5062.         BPL STOTC1    ;FADA
  5063.  
  5064.         LDA NXTBIT    
  5065.         BNE STOTCEX1    ;$FAD3
  5066.  
  5067.         LDX FSBLK    
  5068.         DEX    
  5069.         BNE STOTCEX1A    ;$FAD7
  5070.  
  5071.         LDA #$08    
  5072.         JSR ISETMS1    
  5073.         BNE STOTCEX1A    
  5074.  
  5075. STOTCEX1            
  5076.         LDA #$00    
  5077.         STA RIDATA    
  5078.  
  5079. STOTCEX1A            
  5080.         JMP EOI    
  5081.  
  5082. STOTC1            
  5083.         BVS STOTC4A    ;$FB0D
  5084.         BNE STOTC3    ;$FAF6
  5085.  
  5086.         LDA NXTBIT    
  5087.         BNE STOTCEX1A    
  5088.  
  5089.         LDA RODATA    
  5090.         BNE STOTCEX1A    
  5091.  
  5092.         LDA INBIT    
  5093.         LSR A    
  5094.         LDA ROPRTY    
  5095.         BMI STOTC2    ;$FAF0
  5096.         BCC STOTC4    ;$FB07
  5097.  
  5098.         CLC    
  5099.  
  5100. STOTC2            
  5101.         BCS STOTC4    ;$FB07
  5102.         AND #%00001111    ;$0F
  5103.         STA RIDATA    
  5104.  
  5105. STOTC3            
  5106.         DEC RIDATA    
  5107.         BNE STOTCEX1A    
  5108.  
  5109.         LDA #$40    
  5110.         STA RIDATA    
  5111.         JSR RSTTPP    
  5112.         LDA #$00    
  5113.         STA RIPRTY    
  5114.         BEQ STOTCEX1A    
  5115.  
  5116. STOTC4            
  5117.         LDA #$80    
  5118.         STA RIDATA    
  5119.         BNE STOTCEX1A    
  5120.  
  5121. STOTC4A            
  5122.         LDA NXTBIT    
  5123.         BEQ STOTC5    ;$FB1B
  5124.  
  5125.         LDA #$04    
  5126.         JSR ISETMS1    ;$FE6A
  5127.         LDA #$00    
  5128.         JMP STOTC11A    ;$FB97
  5129.  
  5130. STOTC5            
  5131.         JSR CKWRPT    
  5132.         BCC STOTC_S2    ;$FB23
  5133.         JMP STOTC11    ;$FB95
  5134.  
  5135. STOTC_S2            
  5136.         LDX INBIT    
  5137.         DEX    
  5138.         BEQ STOTC7    ;$FB55
  5139.  
  5140.         LDA IOFLG2    
  5141.         BEQ STOTC6    ;$FB38
  5142.  
  5143.         LDY #$00    
  5144.         LDA ROPRTY    
  5145.         CMP (SAL),Y
  5146.         BEQ STOTC6    ;$FB38
  5147.  
  5148.         LDA #$01    
  5149.         STA RODATA    
  5150.  
  5151. STOTC6            
  5152.         LDA RODATA    
  5153.         BEQ STOTC10    ;$FB87
  5154.  
  5155.         LDX #$3D    
  5156.         CPX TPTR1    
  5157.         BCC STOTC9    ;$FB80
  5158.  
  5159.         LDX TPTR1    
  5160.         LDA SAL+1    
  5161.         STA FBUFFR+1,X
  5162.         LDA SAL    
  5163.         STA FBUFFR,X
  5164.         INX    
  5165.         INX    
  5166.         STX TPTR1    
  5167.         JMP STOTC10    ;$FB87
  5168.  
  5169. STOTC7            
  5170.         LDX TPTR2    
  5171.         CPX TPTR1    
  5172.         BEQ STOTC10A    ;$FB90
  5173.  
  5174.         LDA SAL    
  5175.         CMP FBUFFR,X
  5176.         BNE STOTC10A    ;$FB90
  5177.  
  5178.         LDA SAL+1    
  5179.         CMP FBUFFR+1,X
  5180.         BNE STOTC10A    ;$FB90
  5181.  
  5182.         INC TPTR2    
  5183.         INC TPTR2    
  5184.         LDA IOFLG2    
  5185.         BEQ STOTC8    ;$FB7C
  5186.  
  5187.         LDA ROPRTY    
  5188.         LDY #$00    
  5189.         CMP (SAL),Y
  5190.         BEQ STOTC10A    ;$FB90
  5191.  
  5192.         INY    
  5193.         STY RODATA    
  5194.  
  5195. STOTC8            
  5196.         LDA RODATA    
  5197.         BEQ STOTC10    ;$FB87
  5198.  
  5199. STOTC9            
  5200.         LDA #$10    
  5201.         JSR ISETMS1    ;$FE6A
  5202.         BNE STOTC10A    ;$FB90
  5203.  
  5204. STOTC10            
  5205.         LDA IOFLG2    
  5206.         BNE STOTC10A    ;$FB90
  5207.  
  5208.         TAY    
  5209.         LDA ROPRTY    
  5210.         STA (SAL),Y
  5211.  
  5212. STOTC10A            
  5213.         JSR INCRDP    
  5214.         BNE STOEX    ;$FBCF
  5215.  
  5216. STOTC11            
  5217.         LDA #$80    
  5218.  
  5219. STOTC11A            
  5220.         STA RIDATA    
  5221.         LDX FSBLK    
  5222.         DEX    
  5223.         BMI STOTC_S3    ;$FBA0
  5224.  
  5225.         STX FSBLK    
  5226.  
  5227. STOTC_S3            
  5228.         DEC INBIT    
  5229.         BEQ STOTC12    ;$FBAC
  5230.  
  5231.         LDA TPTR1    
  5232.         BNE STOEX    ;$FBCF
  5233.  
  5234.         STA FSBLK    
  5235.         BEQ STOEX    ;$FBCF
  5236.  
  5237. STOTC12            
  5238.         JSR RESIRQ    
  5239.         JSR RSTTPP    
  5240.         LDY #$00    
  5241.         STY RIPRTY    
  5242.  
  5243. STORTLP1            
  5244.         LDA (SAL),Y
  5245.         EOR RIPRTY    
  5246.         STA RIPRTY    
  5247.         JSR INCRDP    
  5248.         JSR CKWRPT    
  5249.         BCC STORTLP1    ;$FBB6
  5250.  
  5251.         LDA RIPRTY    
  5252.         EOR ROPRTY    
  5253.         BEQ STOEX    
  5254.  
  5255.         LDA #$20    
  5256.         JSR ISETMS1    ;$FE6A
  5257.  
  5258. STOEX            
  5259.         JMP EOI    
  5260.  
  5261.  
  5262. ;====================================================================            
  5263. ; RSTTPP - Reset tape pointer            
  5264. ;            
  5265. RSTTPP            
  5266.         LDA STAL+1    
  5267.         STA SAL+1    
  5268.         LDA STAL
  5269.         STA SAL
  5270.         RTS
  5271.  
  5272.  
  5273. ;====================================================================        
  5274. ; NCHAR - New character setup        
  5275. ;        
  5276. NCHAR        
  5277.         LDA #$08
  5278.         STA SBITCF
  5279.         LDA #$00
  5280.         STA CYCLE
  5281.         STA BITCI
  5282.         STA TPRTY
  5283.         STA RINONE
  5284.         RTS    
  5285.  
  5286.  
  5287. ;====================================================================            
  5288. ; TONE - Send tone to tape            
  5289. ;            
  5290. TONE            
  5291.         LDA ROPRTY    
  5292.         LSR A    ;determine tone length
  5293.         LDA #$60    ;set short tone timing
  5294.         BCC TONE1    ;$FBF3 C=clear, 0
  5295.  
  5296. TONEA            
  5297.         LDA #$B0    ;set long tone time
  5298.  
  5299. TONE1            
  5300.         LDX #$00    
  5301.         STA D2TM2L    
  5302.         STX D2TM2H    
  5303.         LDA D2ORB    
  5304.         EOR #%00001000    ;$08
  5305.         STA D2ORB    
  5306.         AND #%00001000    
  5307.         RTS    
  5308.  
  5309.  
  5310. ;====================================================================            
  5311. ; TWRDTA - Write data to tape            
  5312. ;            
  5313. TWRDTA            
  5314.         SEC    
  5315.         ROR SAL+1    
  5316.         BMI TWRDEX1    ;fc47
  5317.  
  5318. TWRD7            
  5319.         LDA BITCI    
  5320.         BNE TWRD1    ;$FC21
  5321.  
  5322.         LDA #$10    
  5323.         LDX #$01    
  5324.         JSR TONE1+2    ;$FBF5
  5325.         BNE TWRDEX1    ;fc47
  5326.  
  5327.         INC BITCI    
  5328.         LDA SAL+1    
  5329.         BPL TWRDEX1    ;fc47
  5330.         JMP WRLEDR    
  5331.  
  5332. TWRD1            
  5333.         LDA RINONE    
  5334.         BNE TWRD2A    ;$FC2B
  5335.  
  5336.         JSR TONEA    ;$FBF1
  5337.         BNE TWRDEX1    ;fc47
  5338.  
  5339. TWRD2            
  5340.         INC RINONE    ;LDA #$D0
  5341.         BNE TWRDEX1    ;ORA Y
  5342.  
  5343. TWRD2A
  5344.         JSR TONE    
  5345.         BNE TWRDEX1    ;fc47
  5346.  
  5347.         LDA CYCLE    
  5348.         EOR #$01    
  5349.         STA CYCLE    
  5350.         BEQ TWRD3    ;$FC4A
  5351.  
  5352.         LDA ROPRTY    
  5353.         EOR #$01    
  5354.         STA ROPRTY    
  5355.         AND #$01    
  5356.         EOR TPRTY    
  5357.         STA TPRTY    
  5358.  
  5359. TWRDEX1            
  5360.         JMP EOI    
  5361.  
  5362. TWRD3            
  5363.         LSR ROPRTY    
  5364.         DEC SBITCF    
  5365.         LDA SBITCF    
  5366.         BEQ TWRD6    ;$FC8C
  5367.         BPL TWRDEX1    ;fc47
  5368.  
  5369. TWRD3A            
  5370.         JSR NCHAR    
  5371.         CLI    
  5372.         LDA CNTDN    
  5373.         BEQ TWRD4    ;$FC6E
  5374.  
  5375.         LDX #$00    
  5376.         STX LASTKY    
  5377.         DEC CNTDN    
  5378.         LDX FSBLK    
  5379.         CPX #$02    
  5380.         BNE TWRD_S1    ;FC6A
  5381.  
  5382.         ORA #%10000000    ;$80
  5383.  
  5384. TWRD_S1            
  5385.         STA ROPRTY    ;$BD
  5386.         BNE TWRDEX1    ;fc47
  5387.  
  5388. TWRD4            
  5389.         JSR CKWRPT    
  5390.         BCC TWRD5    ;$FC7D
  5391.         BNE TWRDTA    
  5392.  
  5393.         INC SAL+1    
  5394.         LDA LASTKY    
  5395.         STA ROPRTY    
  5396.         BCS TWRDEX1    ;fc47
  5397.  
  5398. TWRD5            
  5399.         LDY #$00    
  5400.         LDA (SAL),Y
  5401.         STA ROPRTY    
  5402.         EOR LASTKY    
  5403.         STA LASTKY    
  5404.         JSR INCRDP    
  5405.         BNE TWRDEX1    ;fc47
  5406.  
  5407. TWRD6            
  5408.         LDA TPRTY    
  5409.         EOR #$01    
  5410.         STA ROPRTY    
  5411.  
  5412. TPEOI            
  5413.         JMP EOI    
  5414.  
  5415.  
  5416. ;====================================================================            
  5417. ; WRLEDR - Write tape leader            
  5418. ;            
  5419. WRLEDR            
  5420.         DEC FSBLK    
  5421.         BNE WRLDR1    ;$FC9C
  5422.  
  5423.         JSR NOMOTR    
  5424.  
  5425. WRLDR1            
  5426.         LDA #$50    
  5427.         STA INBIT    
  5428.         LDX #$08    
  5429.         SEI    
  5430.         JSR STOIRQ1    ;$FCFB tape IRQs
  5431.         BNE TPEOI    ;$FC92
  5432.  
  5433. WRLDR2            
  5434.         LDA #$78    
  5435.         JSR TONE1    ;$FBF3
  5436.         BNE TPEOI    ;$FC92
  5437.  
  5438.         DEC INBIT    
  5439.         BNE TPEOI    ;$FC92
  5440.  
  5441.         JSR NCHAR    
  5442.         DEC RIPRTY    
  5443.         BPL TPEOI    ;$FC92
  5444.  
  5445.         LDX #$0A    
  5446.         JSR STOIRQ1    ;$FCFB
  5447.         CLI    
  5448.         INC RIPRTY    
  5449.         LDA FSBLK    
  5450.         BEQ STOIRQ    ;$FCF6
  5451.  
  5452.         JSR RSTTPP    
  5453.         LDX #$09    
  5454.         STX CNTDN    
  5455.         BNE TWRD3A    ;$FC54
  5456. ;            
  5457. ; RESIRQ - Restore normal IRQ            
  5458. ;            
  5459. RESIRQ            
  5460.         PHP    
  5461.         SEI    
  5462.         JSR NOMOTR    
  5463.         LDA #%01111111    ;$7F
  5464.         STA D2IER    
  5465.         LDA #%11110111    ;$F7
  5466.         STA D2ORB    
  5467.         LDA #%01000000    ;$40
  5468.         STA D2ACR    
  5469.         JSR ENABTM    
  5470.         LDA TAPIRQ+1    
  5471.         BEQ RSIRQEX    ;$FCF4
  5472.  
  5473.         STA IRQVP+1    
  5474.         LDA TAPIRQ    
  5475.         STA IRQVP    
  5476.  
  5477. RSIRQEX                
  5478.         PLP        
  5479.         RTS        
  5480.  
  5481.  
  5482. ;====================================================================                
  5483. ; STOIRQ - Set IRQ vector                
  5484. ;                
  5485. STOIRQ                
  5486.         JSR RESIRQ        
  5487.         BEQ TPEOI    ;$FC92    
  5488.  
  5489. STOIRQ1                
  5490.         LDA RATS3,X    ;$FDE9,X    ;TPVECS
  5491.         STA IRQVP        
  5492.         LDA RATS3+1,X    ;$FDEA,X
  5493.         STA IRQVP+1    
  5494.         RTS    
  5495.  
  5496.  
  5497. ;====================================================================            
  5498. ; NOMOTR - Kill tape motor            
  5499. ;            
  5500. NOMOTR            
  5501.         LDA D1PCR    
  5502.         ORA #%00001110    ;$0E
  5503.         STA D1PCR    
  5504.         RTS    
  5505.  
  5506.  
  5507. ;====================================================================            
  5508. ; CKWRPT - Check read/write pointer            
  5509. ;            
  5510. CKWRPT            
  5511.         SEC    
  5512.         LDA SAL    
  5513.         SBC EAL    
  5514.         LDA SAL+1    
  5515.         SBC EAL+1    
  5516.         RTS    
  5517.  
  5518.  
  5519. ;====================================================================            
  5520. ; INCRDP - Bump read/write pointer            
  5521. ;            
  5522. INCRDP            
  5523.         INC SAL    
  5524.         BNE INCRSK    ;$FD21
  5525.  
  5526.         INC SAL+1
  5527.  
  5528. INCRSK        
  5529.         RTS
  5530.  
  5531.  
  5532. ;####################################################################        
  5533. ; Power-on RESET entry        
  5534. ;####################################################################        
  5535. RESET        
  5536.         LDX #$FF
  5537.         SEI
  5538.         TXS
  5539.         CLD
  5540.         JSR SCNROM
  5541.         BNE SKIPA0    ;$FD2F
  5542.  
  5543.         JMP (A0BASE)    
  5544.  
  5545. SKIPA0            
  5546.         JSR RAMTAS    
  5547.         JSR IRESTR    
  5548.         JSR IOINIT    
  5549.         JSR CINT1    
  5550.         CLI    
  5551.         JMP (BENTER)    
  5552.  
  5553.  
  5554. ;====================================================================            
  5555. ; SCNROM - Scan ROM areas for Autostart ROM signature            
  5556. ;            
  5557. SCNROM            
  5558.         LDX #$05    
  5559.  
  5560. SCNLOOP            
  5561.         LDA SCANEX,X    ;$FD4C,X
  5562.         CMP A0BASE+3,X    ;$A003,X
  5563.         BNE SCANEX    ;$FD4C
  5564.  
  5565.         DEX    
  5566.         BNE SCNLOOP    ;$FD41
  5567.  
  5568. SCANEX            
  5569.         RTS    
  5570. ;            
  5571. ; ROMSIG - Autostart ROM signature            
  5572. ;            
  5573. ROMSIG            
  5574.         .db "A0", $C3, $C2, $CD    ;A0CBM
  5575.  
  5576.  
  5577. ;====================================================================            
  5578. ; IRESTR - Restore KERNEL vectors (internal)            
  5579. ;            
  5580. IRESTR            
  5581.         LDX #$EA     ;FIXUP2;#$6D
  5582.         LDY #$EA     ;FIXUP2+1;#$FD $FD6D KERNEL vecs
  5583.         CLC    
  5584. ;            
  5585. ; IVECTR - Change vectors for user            
  5586. ;            
  5587. IVECTR            
  5588.         STX MEMUSS    
  5589.         STY MEMUSS+1    
  5590.         LDY #$1F    
  5591.  
  5592. VECLOOP            
  5593.         LDA IRQVP,Y
  5594.         BCS VECSK    ;$FD64
  5595.  
  5596.         LDA (MEMUSS),Y
  5597.  
  5598. VECSK            
  5599.         STA (MEMUSS),Y
  5600.         STA IRQVP,Y
  5601.         DEY    
  5602.         BPL VECLOOP    ;$FD5D
  5603.         RTS    
  5604.  
  5605. ;        
  5606. ;KERNEL Vectors        
  5607. ;        
  5608. KNRLSV        
  5609. ;FD6D         
  5610. ;FD75         
  5611. ;FD7D         
  5612. ;FD85         
  5613.         .dw IRQVEC, WARMST, LNKNMI, IOPEN
  5614.         .dw ICLOSE, ICHKIN, ICHKOT, ICLRCH
  5615.         .dw ICHRIN, ICHROT, ISTOP,  IGETIN
  5616.         .dw ICLALL, WARMST, LNKLOD, LNKSAV
  5617.  
  5618. ;====================================================================        
  5619. ; RAMTAS - Initialize system contents        
  5620. ;        
  5621. RAMTAS            
  5622.         LDA #$00    
  5623.         TAX    
  5624.  
  5625. RAMTSLP1            
  5626.         STA USRPOK,X
  5627.         STA BUF,X
  5628.         STA ERRVPT,X
  5629.         INX    
  5630.         BNE RAMTSLP1    ;$FD90
  5631.  
  5632.         LDX #$3C    ;setup cassette buffer
  5633.         LDY #$03    
  5634.         STX TAPE1    
  5635.         STY TAPE1+1    
  5636.         STA STAL    
  5637.         STA REGSAV    
  5638.         STA OSSTAR    
  5639.         TAY    
  5640.         LDA #$04    
  5641.         STA STAL+1    
  5642.  
  5643. RAMTASLP2            
  5644.         INC STAL    
  5645.         BNE RAMTAS1    ;$FDB5
  5646.  
  5647.         INC STAL+1    
  5648.  
  5649. RAMTAS1            
  5650.         JSR MEMTST    
  5651.         LDA REGSAV    
  5652.         BEQ RAMTAS3    ;$FDDE
  5653.         BCS RAMTASLP2    ;$FDAF
  5654.  
  5655.         LDY STAL+1    
  5656.         LDX STAL    
  5657.         CPY #$20    
  5658.         BCC I6561LP    ;$FDEB
  5659.  
  5660.         CPY #$21    
  5661.         BCS RAMTAS2    ;$FDD2
  5662.  
  5663.         LDY #$1E    
  5664.         STY HIPAGE    
  5665.  
  5666. RAMTAS1A            
  5667.         JMP STOTOP    ;$FE7B
  5668.  
  5669. RAMTAS2            
  5670.         LDA #$12    
  5671.         STA OSSTAR+1    
  5672.         LDA #$10    
  5673.         STA HIPAGE    
  5674.         BNE RAMTAS1A    ;$FDCF
  5675.  
  5676. RAMTAS3            
  5677.         BCC RAMTASLP2    ;$FDAF
  5678.  
  5679.         LDA STAL+1    
  5680.         STA OSSTAR+1    
  5681.         STA REGSAV    
  5682.         CMP #$11    
  5683.  
  5684. RATS3            
  5685.         BCC RAMTASLP2    ;$FDAF
  5686.  
  5687. I6561LP            
  5688.         JSR V6561I-2    ;$E5C3
  5689.         JMP I6561LP    ;$FDEB
  5690.  
  5691.  
  5692. ;====================================================================            
  5693. ; TAPEVC - Tape IRQ vectors            
  5694. ;            
  5695. TAPEVC            
  5696. ;        .dw $FCA8, $FC0B, $EABF, $F98E
  5697.         .dw WRLDR2, TWRD7, IRQVEC, RDTPBT
  5698.  
  5699.  
  5700. ;====================================================================            
  5701. ; IOINIT - Initialize I/O            
  5702. ;            
  5703. IOINIT            
  5704.         LDA #%01111111    ;$7F
  5705.         STA D1IER    
  5706.         STA D2IER    
  5707.         LDA #%01000000    ;$40
  5708.         STA D2ACR    
  5709.         LDA #%01000000    ;$40
  5710.         STA D1ACR    
  5711.         LDA #%11111110    ;$FE
  5712.         STA D1PCR    
  5713.         LDA #%11011110    ;$DE
  5714.         STA D2PCR    
  5715.         LDX #$00    
  5716.         STX D1DDRB    
  5717.         LDX #%11111111    ;$FF
  5718.         STX D2DDRB    
  5719.         LDX #$00    
  5720.         STX D2DDRA    
  5721.         LDX #%10000000    ;$80
  5722.         STX D1DDRA    
  5723.         LDX #$00    
  5724.         STX D1ORAH    
  5725.         JSR SCLK1    
  5726.         LDA #%10000010    ;$82
  5727.         STA D1IER    
  5728.         JSR SCLK0    
  5729. ;            
  5730. ; ENABTM - Enable timer            
  5731. ;            
  5732. ENABTM            
  5733.         LDA #%11000000    ;$C0
  5734.         STA D2IER    
  5735.         LDA #%10001001    ;$89
  5736.         STA D2TM1L    
  5737.         LDA #%01000010    ;$42
  5738.         STA D2TM1L+1    
  5739.         RTS    
  5740.  
  5741.  
  5742. ;====================================================================            
  5743. ; ISETNM - Set filename (internal)            
  5744. ;            
  5745. ISETNM            
  5746.         STA FNMLEN    
  5747.         STX FNPTR    
  5748.         STY FNPTR+1    
  5749.         RTS
  5750.  
  5751.  
  5752. ;====================================================================        
  5753. ; ISETLF - Set logical file parameters (internal)        
  5754. ;        
  5755. ISETLF        
  5756.         STA LOGFIL
  5757.         STX CHANNL
  5758.         STY SECADR
  5759.         RTS
  5760.  
  5761.  
  5762. ;====================================================================        
  5763. ; IRDST - Get I/O status word (internal)        
  5764. ;        
  5765. IRDST            
  5766.         LDA CHANNL    
  5767.         CMP #$02    
  5768.         BNE ISETMS+2    ;$FE68
  5769.  
  5770.         LDA RSSTAT    
  5771.         LDA #$00    
  5772.         STA RSSTAT    
  5773.         RTS    
  5774.  
  5775.  
  5776. ;====================================================================            
  5777. ; ISETMS - Control OS messages (internal)            
  5778. ;            
  5779. ISETMS            
  5780.         STA CMDMOD    
  5781.         LDA CSTAT
  5782.  
  5783. ISETMS1        
  5784.         ORA CSTAT
  5785.         STA CSTAT
  5786.         RTS
  5787.  
  5788.  
  5789. ;====================================================================        
  5790. ; ISETTO - Set IEEE timeout (internal)        
  5791. ;        
  5792. ISETTO        
  5793.         STA STIMOT
  5794.         RTS
  5795.  
  5796.  
  5797. ;====================================================================            
  5798. ; IMEMTP - Set/read top of memory (internal)            
  5799. ;            
  5800. IMEMTP            
  5801.         BCC STOTOP    ;$FE7B
  5802.         LDX OSTOP    
  5803.         LDY OSTOP+1    
  5804.  
  5805. STOTOP            
  5806.         STX OSTOP    
  5807.         STY OSTOP+1    
  5808.         RTS    
  5809.  
  5810.  
  5811. ;====================================================================            
  5812. ; IMEMBT - Set/read bottom of memory  (internal)            
  5813. ;            
  5814. IMEMBT            
  5815.         BCC STOBOT    ;$FE8A
  5816.         LDX OSSTAR    
  5817.         LDY OSSTAR+1    
  5818.  
  5819. STOBOT            
  5820.         STX OSSTAR    
  5821.         STY OSSTAR+1    
  5822.         RTS    
  5823.  
  5824.  
  5825. ;====================================================================            
  5826. ; MEMTST - Test memory            
  5827. ;            
  5828. MEMTST            
  5829.         LDA (STAL),Y
  5830.         TAX    
  5831.         LDA #%01010101    ;$55
  5832.         STA (STAL),Y
  5833.         CMP (STAL),Y
  5834.         BNE MEMTS1    ;$FEA4
  5835.  
  5836.         ROR A    
  5837.         STA (STAL),Y
  5838.         CMP (STAL),Y
  5839.         BNE MEMTS1    ;$FEA4
  5840.         .db $A9    ;LDA #$18
  5841.  
  5842. MEMTS1            
  5843.         CLC    
  5844.         TXA    
  5845.         STA (STAL), Y
  5846.         RTS    
  5847.  
  5848.  
  5849. ;====================================================================            
  5850. ; NMI - NMI transfer entry            
  5851. ;====================================================================            
  5852. NMI            
  5853.         SEI    
  5854.         JMP (NMIVP)    ;$FEAD
  5855.  
  5856.  
  5857. ;====================================================================            
  5858. ; LNKNMI - Link to NMI code            
  5859. ;            
  5860. LNKNMI            
  5861.         PHA    
  5862.         TXA    
  5863.         PHA    
  5864.         TYA    
  5865.         PHA    
  5866.         LDA D1IFR    
  5867.         BPL WARMEOI    ;$FEFF EOI
  5868.  
  5869.         AND D1IER    
  5870.         TAX    
  5871.         AND #%00000010    ;$02
  5872.         BEQ WARM1    ;$FEDE
  5873.  
  5874.         JSR SCNROM    
  5875.         BNE LNKNMI1    ;$FEC7 skip A0 init
  5876.  
  5877.         JMP (A0BASE+2)    
  5878.  
  5879. LNKNMI1            
  5880.         BIT D1ORA    
  5881.         JSR IUDTIM    
  5882.         JSR STOP    
  5883.         BNE WARMEOI    ;$FEFF EOI
  5884.  
  5885. ;====================================================================            
  5886. ; WARMST - Default USER vector            
  5887. ;            
  5888. WARMST            
  5889.         JSR IRESTR    
  5890.         JSR IOINIT    
  5891.         JSR CINT1    
  5892.         JMP (BENTER+2)    
  5893.  
  5894. WARM1            
  5895.         LDA D1IER    
  5896.         ORA #%10000000    ;$80
  5897.         PHA    
  5898.         LDA #%01111111    ;$7F
  5899.         STA D1IER    
  5900.         TXA    
  5901.         AND #%01000000    ;$40
  5902.         BEQ WARM2    ;$FF02
  5903.  
  5904.         LDA #%11001110    ;$CE
  5905.         ORA NXTBIT    
  5906.         STA D1PCR    
  5907.         LDA D1TM1L    
  5908.         PLA    
  5909.         STA D1IER    
  5910.         JSR SSEND    
  5911.  
  5912. WARMEOI            
  5913.         JMP EOI    
  5914.  
  5915. WARM2            
  5916.         TXA    ;serial NMI
  5917.         AND #%00100000    ;$20
  5918.         BEQ WARM3    ;$FF2C
  5919.  
  5920.         LDA D1ORB    
  5921.         AND #%00000001    ;$01
  5922.         STA INBIT    
  5923.         LDA D1TM2L    
  5924.         SBC #$16    
  5925.         ADC BAUDOF    
  5926.         STA D1TM2L    
  5927.         LDA D1TM2L+1    
  5928.         ADC BAUDOF+1    
  5929.         STA D1TM2L+1    
  5930.         PLA    
  5931.         STA D1IER    
  5932.         JSR SERRX    
  5933.         JMP EOI    
  5934.  
  5935. WARM3            
  5936.         TXA    
  5937.         AND #%00010000    ;$10
  5938.         BEQ EOI    
  5939.  
  5940.         LDA M51CTR    
  5941.         AND #%00001111    ;$0F
  5942.         BNE $+2    ;$FF38
  5943.  
  5944.         ASL A    
  5945.         TAX    
  5946.         LDA R232TB-2,X    ;$FF5A,X
  5947.         STA D1TM2L    
  5948.         LDA R232TB-1,X    ;$FF5B,X
  5949.         STA D1TM2L+1    
  5950.         LDA D1ORB    
  5951.         PLA    
  5952.         ORA #%00100000    ;$20
  5953.         AND #%11101111    ;$EF
  5954.         STA D1IER    
  5955.         LDX BITNUM    
  5956.         STX BITCI    
  5957. ;        
  5958. ; EOI - End of Interrupt external entry point        
  5959. ;        
  5960. EOI        
  5961.         PLA
  5962.         TAY
  5963.         PLA
  5964.         TAX
  5965.         PLA
  5966.         RTI
  5967.  
  5968.  
  5969. ;====================================================================        
  5970. ; 232TBL - Baud rate tables        
  5971. ;        
  5972. R232TB        
  5973.         .db $92, $27, $40, $1A, $C6, $11, $74, $0E
  5974.         .db $EE, $0C, $45, $06, $F1, $02, $46, $01
  5975.         .db $B8, $00, $71, $00, $2A, $00
  5976.  
  5977.  
  5978. ;====================================================================            
  5979. ; IRQ - IRQ transfer point            
  5980. ;====================================================================            
  5981. IRQ            
  5982.         PHA    
  5983.         TXA    
  5984.         PHA    
  5985.         TYA    
  5986.         PHA    
  5987.         TSX    
  5988.         LDA FBUFFR+4,X    ;$0104,X
  5989.         AND #%00010000    ;$10    breakpoint or IRQ
  5990.         BEQ BRKSKIP    ;$FF82    
  5991.  
  5992.         JMP (BRKVP)        
  5993.  
  5994. BRKSKIP                
  5995.         JMP (IRQVP)        
  5996.  
  5997.  
  5998. ;====================================================================                
  5999. ; - Vector table                
  6000. ;                
  6001.                  
  6002.             ;$ff85    
  6003.         .dw $FFFF    ;unused    
  6004.         .dw $FFFF    ;unused    
  6005.         .db $FF    
  6006.         JMP IRESTR    ;$FD52 RESTOR
  6007.         JMP IVECTR    ;$FD57 VECTOR
  6008.         JMP ISETMS    ;$FE66 SETMSG
  6009.         JMP ISECND    ;$EEC0 SECND
  6010.         JMP ITKSA    ;$EECE
  6011.         JMP IMEMTP    ;$FE73
  6012.         JMP IMEMBT    ;$FE82
  6013.         JMP ISCNKY    ;$EB1E
  6014.         JMP ISETTO    ;$FE6F SETTMO
  6015.         JMP IACPTR    ;$EF19 ACPTR
  6016.         JMP ICIOUT    ;$EEE4
  6017.         JMP IUNTLK    ;$EEF6
  6018.         JMP IUNLSN    ;$EF04
  6019.         JMP ILISTN+1    ;$EE16 
  6020.         JMP ITALK    ;$EE14
  6021.         JMP IRDST    ;$FE57 READST
  6022.         JMP ISETLF    ;$FE50 SETLFS
  6023.         JMP ISETNM    ;$FE49
  6024.         JMP (OPENVP)    ;$F40A OPEN
  6025.         JMP (CLOSVP)    ;$F34A CLOSE
  6026.         JMP (CKINVP)    ;$F2C7 CHKIN
  6027.         JMP (CKOTVP)    ;$F309 CHKOUT
  6028.         JMP (CLCHVP)    ;$F3F3 CLRCH
  6029.         JMP (CHINVP)    ;$F20E CHRIN
  6030.         JMP (CHOTVP)    ;$F27A CHROUT
  6031.         JMP ILOAD    ;$F542
  6032.         JMP ISAVE    ;$F675
  6033.         JMP ISETTM    ;$F767 SETTIM
  6034.         JMP IRDTIM    ;$F760
  6035.         JMP (STOPVP)    ;$F770 STOP
  6036.         JMP (GTINVP)    ;$F1F5 GETIN
  6037.         JMP (CLALVP)    ;$F3EF CLALL
  6038.         JMP IUDTIM    ;$F734
  6039.         JMP ISCREN    ;$E505
  6040.         JMP IPLOT    ;$E50A
  6041.         JMP IIOBASE    ;$E500
  6042.         .dw $FFFF    ;unused
  6043.         .dw $FFFF    ;unused
  6044.  
  6045.  
  6046. ;====================================================================            
  6047. ; - Power-on Vectors            
  6048. ;            
  6049.         .dw NMI    ;$FEA9
  6050.         .dw RESET    ;$FD22
  6051.         .dw IRQ    ;$FF72
  6052.  
  6053. .end    
  6054.  
  6055.